1.在window的文本文件中,回车符(换行)存储的方式是0x0d(CR),0x0a(LF)这两个字节,以C语言字符串表示就是“\r\n”。
但是其他的操作系统中,回车的表示就有很大不同。例如:
linux/Unix:回车用 \n 表示;
Mac OS: 回车用 \r 表示;
Windows:回车用 \r\n 表示;
而在C语言中,回车始终用\n表示,因此在以文本模式读取文件的时候,不同操作系统需要将各自的回车符表示转换为C语言的形式。也就是:
linux/Unix:不做改变
Mac OS: 每遇到\r 就将其变成\n;
Windows:\r\n 改为\n;
以上仅仅是回车符在不同操作系统中的表示形式。
2. 在C语言的字符串中间:\r和\n的作用;
回车 代码:CR ASCII码:/ r ,十六进制,0x0d,回车的作用只是移动光标至该行的起始位置;(return key)
换行 代码:LF ASCII码:/ n ,十六进制,0x0a,换行至下一行行首起始位置;(new line)
3.实验
Linux和windows下,回车试验 CODE:
证明了以上结论。
其实回车和换行之所以把大家搞迷糊的一个重要原因,是大家把键盘的 “回车键”,和我们在windows下的txt文件下敲下的回车键等情况搅在了一起。在键盘上敲下回车键,在不同软件下获得字符大有不同。
Windows下在txt文件中敲下回车键,然后16进制观察,你会发现获得了2个字符,0x0d和0x0a,这个大家都知道,但这不意味着,在任何情况下敲下回车键,都会获得0x0d和0x0a。
在linux下,你对一个文件,敲下回车键,你就会发现,它每次只增加一个字符0x0a。