创建.mid文件:在Windows中编写'\ n'会导致'\ r \ n'

时间:2017-08-23 21:07:20

标签: c windows ascii midi

我通过将字节写入文件并将其保存为.mid来创建.midi文件。我可以运行它并且它可以工作,但是有一些特殊情况它没有。

如果我写一个包含\n(ASCII 10)的字节,那么它将写入2个字节\r\n,这使得.mid无法运行。 (对于Windows机器来说这是正常的,但在我的情况下这是不可取的。)编写\n的示例可能是在选择由\n表示的密钥时。

是否有解决方法来编写\n而不是\r\n或其他方法来确保在Windows计算机上写入的字节是ASCII 10

谢谢!

1 个答案:

答案 0 :(得分:4)

在linux / unix上,指定"wb""w"来创建文件并不重要。

但是在Windows中使用fopen创建文本文件意味着所有\n都会转换为\r\n,因此如果您正在使用它来创建二进制文件,那么二进制文件将会腐败"如果有一些带有值的字节" 10" (换行)

简单的解决方案:在所有平台上创建二进制文件时始终使用fopen("file.bin","wb"),以便您的代码可移植。