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

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

fprintf(your_file, "\n"); 

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

来自维基百科:

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

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

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