• ベストアンサー

Cプログラミング(文字入力)

getsを使って文字を入力し、while文で一文字ずつ 表示させるプログラムをつくりたいのですが、 上手く動作しません。 間違っている点を指摘頂けないでしょうか。 宜しくお願いします。 char c[11]; int i; printf("文字列を入力してください(10文字以内)\n-->"); gets(c); while(i=0;c[i]=='\0';i++){ printf("%c\n",c[i]); }

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

  • ベストアンサー
  • Mizyu
  • ベストアンサー率41% (245/593)
回答No.2

これでやったら出来ました。 ----------------------------------- void main(){ char c[11]; int i; printf("文字列を入力してください(10文字以内)\n-->"); gets(c); for(i=0;c[i]!='\0';i++){ printf("%c\n",c[i]); } } --------------------------------------------- WhileをForにしました。 Whileでやるのであれば while(c[i]!='\0') ですね。

akiko-um
質問者

お礼

ありがとうございました。 初歩的なミスでした。 本当のケアレスミスなので恥ずかしいです(^^;) 以後気をつけます。

その他の回答 (3)

  • aptiva
  • ベストアンサー率36% (193/529)
回答No.4

while文を使うのが命題なのでしょうね。 char c[11]; int i; printf("文字列を入力してください(10文字以内)\n-->"); gets(c); i=0; while(c[i] != '\0') { printf("%c\n",c[i]); i++; }

akiko-um
質問者

お礼

ありがとうございました。 while文バージョンもこれで身につきました。 ケアレスミスなので恥ずかしいです。 気をつけます。

  • manayu
  • ベストアンサー率53% (79/148)
回答No.3

みなさんのおっしゃるとおり、while文の使い方が間違っています。 http://www1.cts.ne.jp/~clab/hsample/Flow/Flow03.html 正しくはfor文です。 http://www1.cts.ne.jp/~clab/hsample/Flow/Flow01.html ちなみに、gets()でなく、fgets()を使ったほうがいいですよ。 http://kitaj.at.infoseek.co.jp/

参考URL:
http://www1.cts.ne.jp/~clab/hsample/Flow/Flow03.html,http://www1.cts.ne.jp/~clab/hsample/Flow/Flow01.html
akiko-um
質問者

お礼

ありがとうございました。 紹介いただいたサイトの内容も確認しました。

  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.1

(1)この場合、使うべきなのはwhileではなくてforです。 (2)for(i=0;c[i]=='\0';i++) のまん中の条件は、 c[i]=='\0' ではなくて c[i]!='\0' です。(条件が成り立っている間ループが回る)

akiko-um
質問者

お礼

ありがとうございました。 二点ともケアレスミスです。 以後気をつけます。

専門家に質問してみよう