#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;
また、指摘したように、あなたのロジックは逆です。chis notの間ループEOFするので、次のように入れるだけですwhile:
while((ch = getchar()) != EOF)
しばらく確認してください。もっと簡単です
while((ch=getchar())!= EOF) {
putchar(ch);
}
EOFは、ファイルの終わりを示すために使用されます。stdinから文字を読み取っている場合は、次のように入力して、whileループを停止できます。
EOF= CTRL+ D(Linuxの場合)
EOF= CTRL+ Z(Windowsの場合)
Escapechracterや\ncharcterでもチェックできます
例
while((ch=getchar()) != 0x1b) { // 0x1b is the ascii of ESC
putchar(ch);
}