- ベストアンサー
文字列中に含まれる文字の個数をカウントするプログラムについて…
文字列、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; }
- みんなの回答 (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; }
その他の回答 (1)
- s___o
- ベストアンサー率35% (108/306)
最近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; }
お礼
素早い回答をありがとうございます!。 早速明日学校で試してみようと思います。
お礼
回答を頂きありがとうございます! このプログラムだと家にあるC言語のコンパイラでも コンパイルする事が出来ました。