- 締切済み
文字型配列について質問です。
「文字型配列にsを宣言し、初期値に[yamada tagosaku ]をセットする。この文字列を表示する。次にキーボードから入力した1文字が何個含まれているかの個数を表示する。キーボードから入力する1文字は文字型変数mに、個数をカウントする変数はctにする。流れ図に従ってプログラムを作れ。」 という問題なのですが、BcPadでエラーが出てしまいます。 困っているので、訂正箇所を教えていただければ幸いです。 流れ図はhttp://imepita.jp/20080527/718540です。 int i,ct=0; char s[20]="yamada tagosaku ",m; printf("%s\n",s); printf("探す1文字 => "); scanf("%s",m); i=0; while(s[i]!=NULL){ if(s[i]==m) ct++; i++; } printf("%s は%d個あります。\n",m,ct); }
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- asuncion
- ベストアンサー率33% (2127/6289)
> while(s[i]!=NULL){ 文字列の終端はNULLでなくて'\0'です。 それから、 > printf("%s は%d個あります。\n",m,ct); char型の変数mに対応する書式文字列は%sではありません。
- asuncion
- ベストアンサー率33% (2127/6289)
> BcPadでエラーが出てしまいます。 何をしたとき(コンパイル時? 実行時?)に どんなエラー(メッセージは?)が出るかを 具体的に示してください。 単に「エラーが出る」だけでは、何も言っていないのと同じです。 なお、 > while(s[i]!=NULL){ char型とポインタとの比較をしているのは、よろしくないと思います。
お礼
No1の方の方法でエラー(m入力後、強制終了になってしまっていました。)が解決しました! どうやらそのwhile文がおかしいようです… 詳しい解説をお願いできますでしょうか? よろしくお願いいたします。
- php504
- ベストアンサー率42% (926/2160)
×scanf("%s",m); // %sは文字列を入力する ○scanf("%c",&m); // 文字を入力するのは%c
お礼
エラーが消えました! ありがとう御座います! ですがwhile文からが表示されない ようです。。
お礼
ありがとうございました。 正常に作動しました。