sud*_*03r 3 c file-handling feof
我正在逐字节读取二进制文件,我需要确定是否已达到eof.
feof()不起作用"只有在对不存在的字节进行读取请求时才设置eof".所以,我可以使用我的自定义check_eof:
if ( fread(&byte,sizeof(byte),1,fp) != 1) {
if(feof(fp))
return true;
}
return false;
Run Code Online (Sandbox Code Playgroud)
但问题是,如果没有达到eof,我的文件指针会向前移动一个字节.因此,解决方案可能是使用ftell()然后fseek()将其置于正确的位置.
另一种解决方案可能是在一些临时存储中缓冲前面的字节.
更好的解决方案?
如果您一次只读取一个字节,那么执行此操作的惯用方法是fgetc:
int c;
while ((c = fgetc(fp)) != EOF) {
// Do something.
}
Run Code Online (Sandbox Code Playgroud)
然后你不应该处理feof.