2017-08-23 28 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")

相關問題