在C中如何编写适合OS的行尾字符?

时间:2009-04-21 20:20:48

标签: c portability

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

3 个答案:

答案 0 :(得分:12)

fprintf(your_file, "\n");

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

答案 1 :(得分:12)

来自维基百科:

  

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

答案 2 :(得分:9)

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

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