我通过将字节写入文件并将其保存为.mid
来创建.midi
文件。我可以运行它并且它可以工作,但是有一些特殊情况它没有。
如果我写一个包含\n
(ASCII 10
)的字节,那么它将写入2个字节\r\n
,这使得.mid
无法运行。 (对于Windows机器来说这是正常的,但在我的情况下这是不可取的。)编写\n
的示例可能是在选择由\n
表示的密钥时。
是否有解决方法来编写\n
而不是\r\n
或其他方法来确保在Windows计算机上写入的字节是ASCII 10
?
谢谢!
答案 0 :(得分:4)
在linux / unix上,指定"wb"
或"w"
来创建文件并不重要。
但是在Windows中使用fopen
创建文本文件意味着所有\n
都会转换为\r\n
,因此如果您正在使用它来创建二进制文件,那么二进制文件将会腐败"如果有一些带有值的字节" 10" (换行)
简单的解决方案:在所有平台上创建二进制文件时始终使用fopen("file.bin","wb")
,以便您的代码可移植。