#include <stdio.h>
main(void) {
char ch;
while (1) {
if ((ch = getchar()) != EOF)
{
break;
}
putchar(ch);
}
return 0;
}
どうすればこの問題から逃れることができwhile
ますか? 私はEOFで試しましたが、うまくいきませんでした。
#include <stdio.h>
main(void) {
char ch;
while (1) {
if ((ch = getchar()) != EOF)
{
break;
}
putchar(ch);
}
return 0;
}
どうすればこの問題から逃れることができwhile
ますか? 私はEOFで試しましたが、うまくいきませんでした。
私はあなたが意味すると思います:
int ch;
EOF
に収まらないからchar
です。
また:
if ((ch=getchar()) == EOF)
break;
あなたの論理は逆です。
これ:
char ch;
は間違ってEOF
いchar
ます。getchar()
の戻り値の型は であるint
ため、このコードは次のようになります。
int ch;
また、指摘したように、あなたのロジックは逆です。ch
is notの間ループEOF
するので、次のように入れるだけですwhile
:
while((ch = getchar()) != EOF)
しばらく確認してください。もっと簡単です
while((ch=getchar())!= EOF) {
putchar(ch);
}
EOFは、ファイルの終わりを示すために使用されます。stdinから文字を読み取っている場合は、次のように入力して、whileループを停止できます。
EOF
= CTRL+ D(Linuxの場合)
EOF
= CTRL+ Z(Windowsの場合)
Escape
chracterや\n
charcterでもチェックできます
例
while((ch=getchar()) != 0x1b) { // 0x1b is the ascii of ESC
putchar(ch);
}