我正在逐字节读取二进制文件,我需要确定是否达到了 eof。
feof() 不起作用,因为“仅在对不存在的字节进行读取请求时才设置 eof”。所以,我可以让我的自定义 check_eof 像:
if ( fread(&byte,sizeof(byte),1,fp) != 1) {
if(feof(fp))
return true;
}
return false;
但问题是,如果没有达到 eof,我的文件指针会向前移动一个字节。所以一个解决方案可能是使用ftell()
,然后fseek()
让它到正确的位置。
另一种解决方案可能是将字节提前缓冲在一些临时存储中。
有更好的解决方案吗?