• 締切済み

C言語

文字列を逆順にするプログラムを考えているのですが分かりません。(例)qwerならrewqです。入力終了は、EOFです。考えたのですが、分かりません。(コンパイルエラーです。)教えてください。宜しくお願いします。#include <stdio.h> unsigned str_length(const char str[]) { unsigned len=0; while (str[len]) len++; return (len); } void put_rstring(const char str[]) { unsigned i = str_length(str): while (i-- >0) putchar(str[i]); } int main(void) { char str[30]; int ch; printf("文字列を入力\n"); /* ----この文字列を入力したあとに、Ctrl+Zを押すと、逆から表示               で反対から、文字列が表示----*/ while (1) { ch=getchar(); if (ch==EOF) break; } printf("逆から表示"); put_rstring(str); puts("です。"); return(0); }

みんなの回答

回答No.3

おそらく、put_rstringに渡しているstrの中に何も入っていない事が 文字化けしている理由だと思います。 載せてあるソースから手を加えたものを載せてみますので 参考になればいいですね☆ 私のパソコンでは、このソースで正しく表示されました。 #include<stdio.h> #include<string.h> void put_rstring(const char str[]) { unsigned i = strlen(str); while (i-- >0) putchar(str[i]); } int main(void) { char str[30]; int ch; int i = 0; printf("文字列を入力\n"); /* ----この文字列を入力したあとに、Ctrl+Zを押すと、 逆から表示で反対から、文字列が表示----*/ while (1) { ch=getchar(); str[i] = ch; if (ch==EOF){ str[i] = '\0'; break; } i++; } printf("逆から表示"); put_rstring(str); puts("です。"); return(0); }

oti896
質問者

お礼

ありがとうございます。おかげさまで分かりました。

  • phoenix343
  • ベストアンサー率15% (296/1946)
回答No.2

#1ですが、よくみるとiに代入している文が;じゃないネ。 たぶんコレだけかと。違ってたらゴメン

oti896
質問者

補足

ありがとうございます。コンパイルはできました。しかし、実行してもできません。 何か文字列を入力して、 そして、Ctr1+Zを押す。ここで、本当なら、逆順のプログラムが、表示されるのですが、ZZZとなってしまってプログラムが表示されません。そこで、Enterを押すと、逆順から表示とでるのですが、文字列が文字化けみたいになってしまいます。どうすればいいですか教えてください。宜しくお願いします。

  • phoenix343
  • ベストアンサー率15% (296/1946)
回答No.1

♯寝起きなのでボケてます(@_@;。 どんなエラーが出たか書かないと。みたところ、文法的に間違っている箇所は無いね。 putcharとgetcharのヘッダがないからかな?

oti896
質問者

補足

エラーE2141 18: 宣言の構文エラー(関数put_restring) 警告W8004 21: iに代入した値が使われていない(関数put_resutring)

関連するQ&A