【发布时间】:2019-04-25 20:23:00
【问题描述】:
所以我一直在编写一个程序,它可以扫描在 Linux 上使用 gcc 和 clang 编译时运行良好的文件。但在 Windows 上,使用 Microsoft 编译器和 MinGW,feof() 会错误触发。一旦检测到文件类型的结束语句,循环就会中断,feof 仅作为故障保护存在,并且永远不会触发 Linux 上的正确文件……
我让程序用 ftell() 打印文件指针位置,而这些值完全是错误的。 EOF 总是在比实际文件大小低几个数量级的 2^n 值处触发...
while(1)
{
...
//File is read here
//normally breaks before EOF-check
if(feof(in))
{
DEBUG_PRINTF("Reached EOF before IEND\n");
break;
}
}
编辑:
用“rb”代替“r”打开文件解决了问题
【问题讨论】:
-
您是否像打开文本文件一样打开二进制文件? Linux 没有实际区别,但 Windows 有。
-
二进制模式解决了它。谢谢!