在C语言中,如何编写适合操作系统的行尾字符?

在C语言中,如何编写适合操作系统的行尾字符?,c,portability,C,Portability,Unix有\n,Mac是\r但现在是\n,DOS/Win32是\r\n。当使用C创建文本文件时,如何确保使用适合操作系统的行尾字符 fprintf(your_file, "\n"); 如果您以文本模式打开文件,则操作系统上的stdio库会将该文件转换为适当的EOL。在二进制模式下,不会发生转换。来自维基百科: 以文本模式写入文件时,'\n' 将透明地转换为 用户使用的本机换行符序列 系统,可能比一个长 性格(请注意 实现不允许存储 文件中的换行符。用于 例如,文本文件的行 可以存储为SQL表的

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

fprintf(your_file, "\n");
如果您以文本模式打开文件,则操作系统上的stdio库会将该文件转换为适当的EOL。在二进制模式下,不会发生转换。

来自维基百科:

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


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


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

+1如果文件是在文本模式下打开的,请提及文本文件和二进制文件之间的区别(并提醒我!)。我应该从一开始就把它包括进去。现在更新了。询问者明确地谈到了文本文件。