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模式,不执行转换,并且直接输出任何转义序列的内部表示.
当您以文本模式打开文件(传递"w" fopen而不是"wb")时,写入文件的任何换行符将自动转换为系统的相应换行符.当您读取文件时,换行符序列将被转换回换行符.
这就是区分文本和二进制模式的重要原因; 如果您以二进制模式写入,C将不会篡改您写入文件的字节.