#include <stdio.h>
main(void) {
char ch;
while (1) {
if ((ch = getchar()) != EOF)
{
break;
}
putchar(ch);
}
return 0;
}
如何逃离此while
?我曾尝试使用EOF,但它没有用。
答案 0 :(得分:7)
我认为你的意思是:
int ch;
因为EOF
不适合char
。
此外:
if ((ch=getchar()) == EOF)
break;
你的逻辑是倒退的。
答案 1 :(得分:3)
此:
char ch;
错误,EOF
不适合char
。 getchar()
的返回值类型为int
,因此此代码应为:
int ch;
另外,正如所指出的那样,你的逻辑是倒退的。它在ch
不是EOF
时循环播放,因此您只需将其放入while
:
while((ch = getchar()) != EOF)
答案 2 :(得分:2)
用while检查。它更简单
while((ch=getchar())!= EOF) {
putchar(ch);
}
EOF用于指示文件的结尾。如果您正在从stdin中读取字符,则可以通过输入以下内容来停止此循环:
EOF
= CTRL + D (适用于Linux) EOF
= CTRL + Z (适用于Windows)
您也可以使用Escape
字符或\n
字符
实施例
while((ch=getchar()) != 0x1b) { // 0x1b is the ascii of ESC
putchar(ch);
}