【发布时间】:2022-01-19 06:59:57
【问题描述】:
#include <stdio.h>
int main()
{
char c = getchar(); //EOF (ctrl + d )
while( ( c = getchar() ) != '?' )
{
printf( "%d\n", c == EOF );//infinite loop printing 1
}
}
这里发生了什么?
就好像 EOF 完全阻止读取它之后的任何内容?
【问题讨论】:
-
这就是 EOF 的全部目的,通知流停止读取。例如。当文件中的所有内容都被读取(因此 EOF = 文件结尾)时,流应该停止读取。
-
EOF 是“文件结尾”的缩写。你知道吗?我想你会的。因此,请说明您在到达文件末尾后希望从文件中读取的内容或其他哪些特殊方面使您的情况与众不同。
-
关于:
char c = getchar();函数:getchar()实际上返回一个int。并且,根据您对char(有符号或无符号)的实现,它可能无法识别 EOF. So, start byint c = getchar();`
标签: c infinite-loop eof getchar