電子書籍の厳選無料作品が豊富!

初歩的なプログラミングです。
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--;
}

宜しくお願いします。

A 回答 (3件)

最後の表示部分のwhileの条件がおかしいですね。



while(i=0){
printf("%c\n",s[i-1]);
i--;
}

では、iに0を代入した真偽を見て、真ならループする様になっています。

while(i>0){
printf("%c\n",s[i-1]);
i--;
}

でうまくいくでしょう。
    • good
    • 0
この回答へのお礼

動作しました!
ありがとうございます。

お礼日時:2004/04/12 14:56

 失礼しました。

No. 2 の回答に誤りです。

 - ループの最初で i に 0 を代入
 - ここで,「i = 0」の式の値は 0。0 は「偽」なので while ループは実行されない

が正しい動作です。失礼いたしました。
    • good
    • 0
この回答へのお礼

動作しました!
ありがとうございます。

お礼日時:2004/04/12 14:57

 2 番めの while ブロックの条件式が間違えています。



 「=」演算子は代入です。ですから,
 - ループの最初に i に 0 を代入
 - printf("%c\n", s[0 - 1]);
この時点で,s[-1] というありえない配列要素にアクセスしてエラーとなります。

 while ループの停止条件は,「i が 0 を超えていたら」ですから,
 while (i > 0) {
とすればよいでしょう。いかがでしょうか。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!