c中文本模式和二进制模式的区别

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

类似地,ASCII值26将在文本模式的文件末尾写入,但这不会在二进制模式下发生。

我知道这个问题早先在SO中提出过,但我没有找到任何这种行为的理由。

我的意思是,这种行为只是为了区分文本和二进制模式,还是有这种转换的任何特定原因,而不是在二进制模式下写入ASCII值26。

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

文本文件处理取决于操作系统。 根本不处理二进制文件。 Windows,用CR + LF替换行结尾,在Linux中,OSX用LF替换。 在Linux中,当涉及OS时,文本文件和二进制文件处理之间没有区别。