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

Posted

技术标签:

【中文标题】mingw 下的 fread() 无法正常工作【英文标题】:fread() under mingw not working properly 【发布时间】:2018-06-04 10:03:52 【问题描述】:

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

GUI 和一切看起来/工作正常。但是, 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 个字节可用。函数返回 87。

谁能给我解释一下?为什么 Linux 下可以运行,Windows 下不行?

【问题讨论】:

这是您必须从文件中读取的第一个、最后一个也是唯一一个调用吗?请尝试创建Minimal, Complete, and Verifiable Example 并展示给我们。 不,我使用了“r”。这不是唯一的 fread 调用。还有一些其他的电话。问题是。该文件有多个千兆字节大。用一个小文件就可以了。 是的。谢谢你们。将 fopen 的“r”更改为“rb”解决了这个问题 【参考方案1】:

从这个文件中读取的问题是,我打开了一个二进制文件

fopen("foo", "r");

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

fopen("foo", "rb");

此解决方案适用于两个系统,并且现在按预期运行。

【讨论】:

以上是关于mingw 下的 fread() 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

QT debug执行exe文件 应用程序无法正常启动0xc000007b

中心模式下的光滑轮播导致 SlidesToscroll 无法正常工作

与 grepl 一起 fread

用eclipse无法新建c/c++工程

code blocks里无法build。有人告诉我要把gcc设成根目录下的\MinGW。但是我完全没明白啥意思

使用Visual Studio 2015,2017,CMake 3.10完全无法正常工作