Windows文件系统为DOS模式,Linux的文件系统为UNIX模式。
系统 行尾 格式
Unix/Linux/Mac OS X \n (0x0a) DE><LF>DE>
MacIntosh(早期MAC) \r (0x0d) DE><CR>DE>
Windows \r\n DE><CR>DE>DE><LF>DE>
- CR:Carriage Return,对应ASCII中转义字符\r,表示回车
- LF:Linefeed,对应ASCII中转义字符\n,表示换行
- CRLF:Carriage Return & Linefeed,\r\n,表示回车并换行
在很久以前的机械打字机时代,CR和LF分别具有不同的作用:LF会将打印纸张上移一行位置,但是保持当前打字的水平位置不变;CR则会将“Carriage”(打字机上的滚动托架)滚回到打印纸张的最左侧,但是保持当前打字的垂直位置不变,即还是在同一行。
计算机的寄存器流行,为节省空间又加以改进,使用一个字符控制换行,微软则沿用老式的两个字符换行。
转换时,可以借助工具或脚本。如UltraEdit另存为时,可以选择换行模式。
在Vim显示^M字符的原因:在Windows下换行使用CRLF两个字符来表示,其中CR为回车(ASCII=0x0D),LF为换行(ASCII=0x0A)
fwrite函数,加上b表示二进制模式;不加或者加上t表示文本模式。
fwrite用二进制模式写文件时,原样写入;文本模式写文件时,遇到换行符(0x0A,10,\n,LF,line feed),会在前面插入一个回车符(0x0D,13,\r,CR,carriage return)