• ベストアンサー

文字列中に含まれる文字の個数をカウントするプログラムについて…

文字列、1文字が与えられたとき、これをポインタで入力し文字列中に含まれる文字の個数を計算するプログラムを作成せよ。 と、いう課題がだされたんですけど、ユーザが任意の文字列と1文字を入力できるようにすることができません…。 多分main関数の部分をちょっといじくればよいと思うのですが…。 どなたかアドバイスをお願いします。 #include <stdio.h> int count(const char *str, const char ch) { int cnt=0; while (*str!='\0') { if (*str==ch) cnt++; str++; } return cnt; } int main() { const char *str="hello,world!"; const ch='o'; int cnt; cnt=count(str, ch); printf("%s中に%cは%d個です\n", str, ch, cnt); return 0; }

質問者が選んだベストアンサー

  • ベストアンサー
  • mac_res
  • ベストアンサー率36% (568/1571)
回答No.2

scanf"%s", str)は、バッファオーバーフローの危険と改行文字の食べ残し問題がありますね。 -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- int main() { char ch; char str[BUFSIZ]; int cnt; printf("文字列を入力して下さい > "); fgets(str,BUFSIZ,stdin); printf("カウントする文字を入力してください > "); ch = getchar(); cnt=count(str, ch); printf("%s中に%cは%d個です\n", str, ch, cnt); return 0; }

3298999i
質問者

お礼

回答を頂きありがとうございます! このプログラムだと家にあるC言語のコンパイラでも コンパイルする事が出来ました。

その他の回答 (1)

  • s___o
  • ベストアンサー率35% (108/306)
回答No.1

最近C言語を使ってませんが、count関数に渡す引数をmain関数で標準入力させたいってことですか? int main() { char ch; char str[256]; int cnt; printf("文字列を入力して下さい > "); scanf("%s", str); printf("カウントする文字を入力してください > "); scanf("%c", ch); cnt=count(str, ch); printf("%s中に%cは%d個です\n", str, ch, cnt); return 0; }

3298999i
質問者

お礼

素早い回答をありがとうございます!。 早速明日学校で試してみようと思います。

関連するQ&A

専門家に質問してみよう