创建 .mid 文件:写入 '\n' 导致 Windows 中的 '\r\n'

creating .mid file: writing a '\n' causes '\r\n' in Windows

我通过向文件写入字节并将其另存为 .midi 创建了一个 .mid 文件。我可以 运行 它并且它有效,但在某些特殊情况下它不起作用。

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

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

谢谢!

在linux/unix上,创建文件时指定"wb""w"都没有关系。

但是在 windows 中使用 fopen 创建文本文件意味着所有 \n 都转换为 \r\n,因此如果您使用它来创建二进制文件,二进制文件将是 "corrupt" 如果有一些字节值为“10”(换行)

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