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 个额外的字节,因此图像已损坏,无法显示。
- 我已经读取了
fwrite()
returns 的值并且等于要写入的大小(两种情况均为 384)
- 我已经检查了指向
fwrite()
和内部 (FILE*)->_base
的指针的数据,它们都指向一个内容正确的地址,但与生成的文件不同。
并且在删除这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!
感谢大家,你们都是了不起的人!
我正在使用 eclipse for c(版本:2020-03 (4.15.0) Build id:20200313-1211)和 MinGW(版本 0.6.3-pre-20170905-1)。
这几周一直在玩fwrite()
,主要是制作BMP文件,没有出现什么奇怪的问题。
现在我完全不明白发生了一些非常奇怪的事情:生成的文件有 2 个额外的字节,因此图像已损坏,无法显示。
- 我已经读取了
fwrite()
returns 的值并且等于要写入的大小(两种情况均为 384) - 我已经检查了指向
fwrite()
和内部(FILE*)->_base
的指针的数据,它们都指向一个内容正确的地址,但与生成的文件不同。
并且在删除这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! 感谢大家,你们都是了不起的人!