7

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

4

3 回答 3

12
fprintf(your_file, "\n");

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

于 2009-04-21T20:23:33.497 回答
12

来自维基百科:

在文本模式下写入文件时,'\n' 被透明地转换为系统使用的本机换行符序列,它可能比一个字符长。(请注意,C 实现不允许在文件中存储换行符。例如,文本文件的行可以存储为 SQL 表的行或固定长度的记录。)在文本模式下读取时,本机换行序列被翻译回'\n'。二进制模式,C库支持的第二种I/O模式,不进行翻译,直接输出任何转义序列的内部表示。

于 2009-04-21T20:23:46.007 回答
9

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

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

于 2009-04-21T20:26:17.280 回答