int main(int argc, char *argv[])
{
int c = EOF;
FILE *fp = fopen("./temp.txt", "r");
assert(fp!=NULL);
while (1) {
c = fgetc(fp);
if (EOF != c) {
putchar(c);
}
}
return 0;
}
temp.txt是一个缓慢增加的日志文件,因此该程序可以读取 EOF。在它第一次遇到 EOF 之后,我认为它应该停止获取temp.txt的新添加数据,而它就像tail -f temp.txt
并继续打印文件的新行一样。
是的,我知道有一个无限循环。问题是我想,当fgetc第一次遇到 EOF 时,它应该在 struct fp中做一些记录,并且fgetc的下一次调用应该检查这一点并立即返回 EOF。为什么它继续读取磁盘上的数据,它没有到达文件末尾?这是预期的行为吗?