質問: C言語についての質問です。 一文字ずつ標準入力で受け取った文字列に対して処理を加えて標準出力で文字列を返すというプログラムを作りたいです。 そこでまず、標準入力から受け取った文字列をそのまま標準出力へ流すプログラムを書こうと思ったのですが、うまくいきません・・・。 ``` #include #include int main(){ int ch; while(ch=fgetc(stdin) !=EOF ){ fputc(ch,stdout); } return 0; } >>gcc -g プログラム >>echo 22|./a.out ・・・ //出力結果がおかしい ``` よろしくお願いいたします
回答: > > while(ch=fgetc(stdin) !=EOF ){ > > > `ch=fgetc(stdin) !=EOF`は演算子の優先度の関係上`ch`に`fgetc(stdin) !=EOF`の結果を代入するものになります。 ``` while((ch=fgetc(stdin)) !=EOF ){ ``` としましょう。