我试图读取一个文件并以不同的方式处理最后一个字节。这是我的代码:
FILE * file = fopen(path,"rb");
unsigned char curr;
while (fread(&in, 1, 1, file) >= 1)
{
If (Is_Last_Byte){
//Does something
}
else{
//Does something else
}
}
如何执行此检查?是否可以设置指向最后一个字节的指针,并在每次循环迭代期间执行此检查?
提前致谢。
答案 0 :(得分:0)
由于没有什么可以区分最后一个字节与任何其他字节,最好的办法是始终在正在处理的字节(缓冲区)之前读取一个字节(或缓冲区)。当预读返回EOF时,您知道您要处理的字节(缓冲区)是最后一个。
这与经常重复的建议基本上是相同的逻辑结构,即当read
返回EOF而不是具有while(!feof(file))
形式时,读取循环应该终止。 (需要重复建议的事实表明消息在某种程度上无法通过:-))while(!feof(file))
错误,因为最后一个字节不是特殊的;即使在阅读之后,也不知道不再有字节了。