Unix有\ n,Mac是\ r \ n但现在是\ n而DOS / Win32是\ r \ n。使用C创建文本文件时,如何确保使用适合操作系统的行字符末尾?
答案 0 :(得分:12)
fprintf(your_file, "\n");
如果您以文本模式打开文件,这将由操作系统上的stdio库转换为适当的EOL。在二进制模式下,不会发生转换。
答案 1 :(得分:12)
来自维基百科:
在文本模式下编写文件时,'\ n' 被透明地翻译成了 本机换行序列使用的 系统,可能长于一个 字符。 (注意一个C. 允许实现不存储 文件中的换行符。对于 例如,文本文件的行 可以存储为SQL表的行 或作为定长记录。)何时 以文本模式阅读,原生 换行序列被翻译回来 '\ n'。在二进制模式下,第二种模式 C库支持的I / O,没有 执行翻译,并且 任何逃避的内部表示 序列直接输出。
答案 2 :(得分:9)
当您以文本模式打开文件时(将“w”传递给fopen
而不是“wb”),写入文件的任何换行符都将自动转换为系统的相应换行符。当您阅读文件时,换行符序列将被转换回换行符。
这就是为什么区分文本和二进制模式很重要的原因;如果您以二进制模式写入,C将不会篡改您写入文件的字节。