具有简单的文本文件,例如myfile1.txt:
cat myfile1.txt:
abc
及以下代码
# include <stdio.h>
# include <string.h>
# include <errno.h>
# include <unistd.h>
char mybuffer[80] = "abc\n";
char* result = NULL;
int main() {
FILE* pFile;
pFile = fopen ("myfile1.txt", "r+");
int c;
if (pFile == NULL)
perror ("Error opening file");
else {
result = fgets(mybuffer, 80, pFile);
if (feof(pFile)) {
printf("fgets EOF");
}
fclose (pFile);
return 0;
}
}
为什么函数feof
在到达流的末尾时不返回非零值(fgets
得到3个字符“ abc”并达到EOF)?
答案 0 :(得分:1)
因为feof()
在尝试读取文件末尾之前不会返回true。
根据文档:
检查是否设置了与流关联的文件结束指示符,如果返回,则返回一个不同于零的值。
此指示器通常由尝试在文件末尾读取的流上的先前操作设置。