mingw 下的 fread() 无法正常工作

fread() under mingw not working properly

我用 GTK 在 Linux 下编写了一个 C 应用程序。有朋友想在Windows下测试一下。所以我们使用MinGW64编译它。

GUI 和应有的一切 looks/works。但是,fread() 调用不起作用。

read = fread(workbuff, sizeof(char), rec_data_length, bin_file);

    if (read != rec_data_length) {
        /* Here is some error handling */
    }

rec_data_length 是 608。我确保文件没有损坏,并且这 608 个字节可用。函数returns87.

谁能给我解释一下?为什么它在 Linux 下有效但在 Windows 下无效?

读取这个文件的问题是,我用

打开了一个二进制文件
fopen("foo", "r");

这在 Linux 下运行良好。但是在 Windows 我不得不将其更改为

fopen("foo", "rb");

此解决方案适用于两个系统,并且现在的行为符合预期。