我想知道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?如何轻松检查我是否输入了一个随机文件?
答案 0 :(得分:1)
feof
清除它,则 clearerr
将返回true(1)。当您第一次打开文件并且没有阅读任何内容时,您还没有读过结尾,所以它返回0.
此行为是while(feof(infile) != 0)
使用almost always wrong的原因。相反,您应该检查fread
调用的返回值,并使用它来控制循环。