\r、\n与\r\n

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weinabanta/article/details/35795363

1.回车换行动作


当我们使用计算机写文章时,写到每行末尾,需要换到下一行继续写,包含着两个动作,一个叫 回车,即回到本行行首;一个叫 换行,即切换到新的一行。注意这是两个动作,而且这两个动作是完成此任务的最简形式。而现在敲的回车键其实包含了回车和换行两个动作,全称应叫回车换行,简称回车。
如下图:


2.回车换行存储


上面所说的是动作,而想要把打的文字存储起来就会涉及到如何把相应的回车换行符号存储起来的问题,方便下次打开时,会按照当前的格式显示,这就会应用到转义字符。

回车:Carriage Return 使用转义字符'\r'表示,很显然用的是第2个单词的首字母。

换行:New Line 使用转义字符'\n'表示,很显然用的是第1个单词首字母。

回车换行:最自然的方式是使用'\r''\n'两个转义字符表示。

但不同的操作系统却有不同方式,即如何表示行结束并开始新的一行,因为的操作系统设计感觉回车换行符使用两字符表示太浪费空间,于是使用一个字符表示。

1)Mac OS \r
2)Unix与Linux \n 
3)Windows \r\n Windows使用的是最自然的方式。

如上可以得出:
Mac系统里,每行结尾是“<回车>”,即'\r';
Unix/Linux系统里,每行结尾只有“<换行>”,即“\n”;
Windows系统里面,每行结尾是“<换行><回车>”,即“\n\r”;
直接后果是,Unix/Linux/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。

3.回车换行故事


在计算机没有出现以前,有一种叫做电传打字机(Teletype)的机器,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。
于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。
这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。
后来,计算机发明了,这两个概念也就被般到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个即可于是,就出现了分歧。





猜你喜欢

转载自blog.csdn.net/weinabanta/article/details/35795363