创建 .mid 文件 : writing a '\n' causes '\r\n' in Windows

标签 c windows ascii midi

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

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

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

谢谢!

最佳答案

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

但是在 Windows 中使用 fopen 创建一个文本文件意味着所有的 \n 都被转换为 \r\n,所以如果你重新使用它来创建二进制文件,如果有一些字节值为“10”(换行),则二进制文件将“损坏”

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

关于创建 .mid 文件 : writing a '\n' causes '\r\n' in Windows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45849284/

相关文章:

c++ - 网络编程基础知识,需要帮助才能理解 addrinfo/sockaddr_in 结构用法等

Powershell magnling ascii 文本

c - vfscanf.c 警告 : the scanf functions add several kilobytes of bloat

c - 如何在c中管理全局结构

c - 输入一个短语来 scanf ("%c", &ch)...(%c 表示序列,不适用于单个符号)

php - 有没有办法在 PDO 中设置默认游标类型(特别是 PDO_SQLSRV)?

windows - 如何使用 MS-DOS 命令模拟 curl?

linux - 是否可以修复因 ASCII 转换而损坏的 PNG 文件?

python - 如何从python中的字符串中删除换页

c - 为什么C标准中没有 "recalloc"?