创建 .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")
,以便您的代码可移植。
我通过向文件写入字节并将其另存为 .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")
,以便您的代码可移植。