我想知道 feof() 到底是如何工作的。我写了一些简单的程序来检查,但结果与我的预期相去甚远。这是代码
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE* infile = fopen("obrazek.bmp","r");
int a;
while (feof(infile) != 0)
{
fread(&a, sizeof(a),1, infile);
//int n = feof(infile);
printf("%i",a);
};
fclose(infile);
return 0;
}
如果我只打开一个文件,为什么 feof() 返回 0?如何轻松检查我是否到达了随机文件的末尾?
最佳答案
如果您之前尝试读取文件末尾,并且未使用 clearerr
清除它,
feof
返回 true (1)。当您第一次打开文件并且没有读取任何内容时,您还没有读到末尾,因此它返回 0。
这种行为就是为什么使用 while(feof(infile) != 0)
是 almost always wrong 。相反,您应该检查 fread
调用的返回值并使用它来控制循环。
关于c - 为什么 feof() 在任何操作之前返回 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31862682/