【问题标题】:In C how to write whichever end of line character is appropriate to the OS?在 C 中如何编写适合操作系统的行尾字符?
【发布时间】:2009-04-21 20:20:47
【问题描述】:

Unix 有\n,Mac 是\r,但现在是\n,DOS/Win32 是\r\n。使用 C 创建文本文件时,如何确保使用适合操作系统的行尾字符?

【问题讨论】:

    标签: c portability


    【解决方案1】:
    fprintf(your_file, "\n");
    

    如果您以文本模式打开文件,这将由您操作系统上的 stdio 库转换为适当的 EOL。在二进制模式下,不会发生转换。

    【讨论】:

    • 如果文件以文本模式打开
    • 是的,当然。我应该从一开始就包括在内。现已更新。
    • 提问者明确谈到了文本文件。
    【解决方案2】:

    来自维基百科:

    在文本模式下写入文件时,'\n' 被透明地翻译成 使用的本机换行序列 系统,可能长于一个 特点。 (请注意,一个 C 执行允许不存储 文件中的换行符。为了 例如,文本文件的行 可以存储为 SQL 表的行 或作为固定长度的记录。)当 以文本模式阅读,本机 换行序列被翻译回 '\n'。在二进制模式下,第二种模式 C 库支持的 I/O,无 进行翻译,并且 任何逃逸的内部表示 序列直接输出。

    【讨论】:

      【解决方案3】:

      当您以文本模式打开文件时(将“w”传递给fopen 而不是“wb”)写入文件的任何换行符将自动转换为系统的适当换行符序列。读取文件时,换行符序列将被转换回换行符。

      这就是区分文本和二进制模式很重要的原因;如果您以二进制模式编写,C 将不会篡改您写入文件的字节。

      【讨论】:

      • +1 用于提及文本和二进制文件之间的区别(并且击败了我!)
      猜你喜欢
      • 2020-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-04
      • 2011-06-07
      • 1970-01-01
      相关资源
      最近更新 更多