【问题标题】:Difference between text mode and binary mode in cc中文本模式和二进制模式的区别
【发布时间】:2012-12-03 02:52:21
【问题描述】:

在文本模式下写入/读取文件时,新行字符被转换为回车和换行,即 \n 到 \r\n 但在二进制模式下不会发生这种情况。

同样,ASCII 值 26 将在文本模式下写入文件末尾,但在二进制模式下不会发生。

我知道这个问题之前在 SO 中被问过,但我没有找到任何关于这种行为的理由。

我的意思是,这种行为只是为了区分文本和二进制模式,还是这种翻译有任何具体原因,并且在二进制模式的情况下不写入 ASCII 值 26。

【问题讨论】:

    标签: c file-io


    【解决方案1】:

    在某种意义上,二进制模式是“原始的”:没有翻译任何内容,因为它没有这样做的基础。而在文本模式下,文件被解释为文本,因此(例如)行尾被翻译成适当的表示。

    【讨论】:

      【解决方案2】:

      文本文件处理取决于操作系统。根本不处理二进制文件。 Windows,用 CR+LF 替换行尾,在 Linux 和 OSX 中它是 LF。在 Linux 中,就操作系统而言,文本文件和二进制文件的处理没有区别。

      【讨论】:

      • 您的意思是这种翻译发生在库函数而不是操作系统函数级别?
      • 我的意思是任何级别都没有翻译
      【解决方案3】:

      模式修饰符翻译模式 t 以文本(翻译)模式打开。 b 以二进制(未翻译)模式打开;涉及回车和换行字符的翻译被禁止。

      【讨论】:

        猜你喜欢
        • 2013-08-02
        • 1970-01-01
        • 2021-11-27
        • 2021-12-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多