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 无法正常工作