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



我将eclipse用于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的正方形,带有灰度梯度。

提前感谢!

哇,感谢大家的快速回答!

事实上,n已转换为rn。将文件创建为二进制文件(fopen(<>,"wb")(已经解决了这个问题!

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

相关内容

  • 没有找到相关文章

最新更新