2017-08-23 27 views
1

我已经创建了一个.mid文件,它将字节写入文件并将其保存为.midi。我可以运行它,它可以工作,但有些特殊情况下它不会。创建.mid文件:在Windows中写入' n'会导致' r n'

如果我写含有\n(ASCII 10)一个字节那么它将代替写入2个字节\r\n,这使得.mid不可运行。 (这是正常的Windows机器做的,但对我来说是不可取的。)写\n采摘正由\n代表的键时可能是一个例子。

是否有解决方法来写\n而不是\r\n或另一种方法来确保在Windows机器上写入的字节是ASCII 10

谢谢!

+0

是您使用的代码写字节? – edtheprogrammerguy

+2

只是以二进制方式打开文件'的fopen(“file.out”,“WB”)'以避免换行转换 –

回答

4

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

但是创建在Windows中使用fopen一个文本文件,意味着所有\n转换为\r\n,所以如果你使用它来创建二进制文件,二进制文件将“腐败”是否存在与价值一些字节“ 10" (换行)

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

相关问题