• 締切済み

文字型配列について質問です。

「文字型配列に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); }

みんなの回答

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.3

> while(s[i]!=NULL){ 文字列の終端はNULLでなくて'\0'です。 それから、 > printf("%s は%d個あります。\n",m,ct); char型の変数mに対応する書式文字列は%sではありません。

love_basst
質問者

お礼

ありがとうございました。 正常に作動しました。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.2

> BcPadでエラーが出てしまいます。 何をしたとき(コンパイル時? 実行時?)に どんなエラー(メッセージは?)が出るかを 具体的に示してください。 単に「エラーが出る」だけでは、何も言っていないのと同じです。 なお、 > while(s[i]!=NULL){ char型とポインタとの比較をしているのは、よろしくないと思います。

love_basst
質問者

お礼

No1の方の方法でエラー(m入力後、強制終了になってしまっていました。)が解決しました! どうやらそのwhile文がおかしいようです… 詳しい解説をお願いできますでしょうか? よろしくお願いいたします。

  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

×scanf("%s",m); // %sは文字列を入力する ○scanf("%c",&m); // 文字を入力するのは%c

love_basst
質問者

お礼

エラーが消えました! ありがとう御座います! ですがwhile文からが表示されない ようです。。