#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;
此外,正如所指出的,您的逻辑是倒退的。它循环 while ch
is not EOF
,所以你可以把它放在while
:
while((ch = getchar()) != EOF)
检查一下。它更简单
while((ch=getchar())!= EOF) {
putchar(ch);
}
EOF 用于指示文件的结束。如果您正在从标准输入读取字符,您可以通过输入以下内容来停止此 while 循环:
EOF
= CTRL+ D(对于 Linux)
EOF
= CTRL+ Z(对于 Windows)
您也可以使用Escape
字符或\n
字符进行检查
例子
while((ch=getchar()) != 0x1b) { // 0x1b is the ascii of ESC
putchar(ch);
}