fwrite() c函数写额外的字节。

问题描述 投票:0回答:1

我正在使用eclipse for c(版本:2020-03 (4.15.0) Build id: 20200313-1211)和MinGW(版本0.6.3-pre-20170905-1)。

我一直在玩 fwrite() 在过去的几个星期里,主要是创建BMP文件,没有任何奇怪的问题。

现在发生了一些非常奇怪的事情,我完全不明白:生成的文件多了2个字节,因此图像被破坏,无法显示。

  • 我读到的值是 fwrite() 返回并等于要写的大小(两种情况下都是384)。
  • 我已经检查了给到 fwrite() 和内部 (FILE*)->_base 并且都指向一个地址,内容正确,但与生成文件的内容不同。

而当删除这2个字节时,图像是完全可以读取的(我用的是HxD软件)。

这是生成的文件,这2个字节是指 0D 前两 0A 00 00 00 (就是宽度和高度)这些额外的字节,我不知道它们从哪里来,而且因为它们的位置,它们偏移了所有其他的BMP头信息,破坏了图像!

损坏的BMP文件的内容

BMP一点都不花哨,只是一个10x10px的正方形,有灰度渐变。

先谢谢你了!

c eclipse mingw fwrite bmp
1个回答
0
投票

哇,感谢大家的快速回答!我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是,我的问题是。

确实是 \n转为 \r\n 的问题。将文件创建为二进制文件(fopen(<>,"wb"))已经解决了这个问题!感谢tkausl和Johnny Mopp!感谢大家,你们是了不起的人。

谢谢tkausl和Johnny Mopp!谢谢大家,你们是了不起的人。

© www.soinside.com 2019 - 2024. All rights reserved.