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

fwrite() c function writing extra bytes

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

这几周一直在玩fwrite(),主要是制作BMP文件,没有出现什么奇怪的问题。

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

并且在删除这2个字节时,图像完全可读(我使用软件HxD)。

这是生成的文件,2 个字节是 0D,然后两个 0A 00 00 00(宽度和高度)是这些额外的字节,我不知道在哪里它们来自,并且因为位于何处,它们偏移了所有其他 BMP header 信息并损坏了图像!

Contents of the corrupted BMP file

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

提前致谢!

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

确实是 \n 转换为 \r\n 的问题。将文件创建为二进制文件 (fopen(<>,"wb")) 已解决问题![​​=13=]

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