- ベストアンサー
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]); }
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
これでやったら出来ました。 ----------------------------------- 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') ですね。
その他の回答 (3)
- aptiva
- ベストアンサー率36% (193/529)
while文を使うのが命題なのでしょうね。 char c[11]; int i; printf("文字列を入力してください(10文字以内)\n-->"); gets(c); i=0; while(c[i] != '\0') { printf("%c\n",c[i]); i++; }
お礼
ありがとうございました。 while文バージョンもこれで身につきました。 ケアレスミスなので恥ずかしいです。 気をつけます。
- manayu
- ベストアンサー率53% (79/148)
みなさんのおっしゃるとおり、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/
お礼
ありがとうございました。 紹介いただいたサイトの内容も確認しました。
- liar_adan
- ベストアンサー率48% (730/1515)
(1)この場合、使うべきなのはwhileではなくてforです。 (2)for(i=0;c[i]=='\0';i++) のまん中の条件は、 c[i]=='\0' ではなくて c[i]!='\0' です。(条件が成り立っている間ループが回る)
お礼
ありがとうございました。 二点ともケアレスミスです。 以後気をつけます。
お礼
ありがとうございました。 初歩的なミスでした。 本当のケアレスミスなので恥ずかしいです(^^;) 以後気をつけます。