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

Rob*_*Kam 7 c portability

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

hlo*_*dal 12

fprintf(your_file, "\n");
Run Code Online (Sandbox Code Playgroud)

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


Dan*_*son 12

来自维基百科:

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


Jay*_*rod 9

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

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