如何在文件读取时实现IF来检测最后一个字节?

时间:2017-04-10 21:49:59

标签: c file io

我试图读取一个文件并以不同的方式处理最后一个字节。这是我的代码:

 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
   }
 }

如何执行此检查?是否可以设置指向最后一个字节的指针,并在每次循环迭代期间执行此检查?

提前致谢。

1 个答案:

答案 0 :(得分:0)

由于没有什么可以区分最后一个字节与任何其他字节,最好的办法是始终在正在处理的字节(缓冲区)之前读取一个字节(或缓冲区)。当预读返回EOF时,您知道您要处理的字节(缓冲区)是最后一个。

这与经常重复的建议基本上是相同的逻辑结构,即当read返回EOF而不是具有while(!feof(file))形式时,读取循环应该终止。 (需要重复建议的事实表明消息在某种程度上无法通过:-))while(!feof(file))错误,因为最后一个字节不是特殊的;即使在阅读之后,也不知道不再有字节了。