- ベストアンサー
文字列を後ろから1文字ずつ表示する
初歩的なプログラミングです。 C言語の勉強中で、タイトルの通りの プログラムを作りたいのですが、 何かヒントを頂けないでしょうか。 自分で書いてみて失敗したのは下記の 通りです。 char s[11]; int i=0; printf("文字列入力(10文字以内-->)"); gets(s); printf("s=%s",s); while(s[i]!='\0'){ i++; } while(i=0){ printf("%c\n",s[i-1]); i--; } 宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
最後の表示部分のwhileの条件がおかしいですね。 while(i=0){ printf("%c\n",s[i-1]); i--; } では、iに0を代入した真偽を見て、真ならループする様になっています。 while(i>0){ printf("%c\n",s[i-1]); i--; } でうまくいくでしょう。
その他の回答 (2)
- elttac
- ベストアンサー率70% (592/839)
失礼しました。No. 2 の回答に誤りです。 - ループの最初で i に 0 を代入 - ここで,「i = 0」の式の値は 0。0 は「偽」なので while ループは実行されない が正しい動作です。失礼いたしました。
お礼
動作しました! ありがとうございます。
- elttac
- ベストアンサー率70% (592/839)
2 番めの while ブロックの条件式が間違えています。 「=」演算子は代入です。ですから, - ループの最初に i に 0 を代入 - printf("%c\n", s[0 - 1]); この時点で,s[-1] というありえない配列要素にアクセスしてエラーとなります。 while ループの停止条件は,「i が 0 を超えていたら」ですから, while (i > 0) { とすればよいでしょう。いかがでしょうか。
お礼
動作しました! ありがとうございます。