回车的传说---兼谈\n\r区别

转载 2013年12月04日 16:05:55
如果你有在windows下编程的经验就会发现windows下敲下回车键会产生两个字符CR和LF,用16进制编辑器打开windows下的文本文件也会看到换行是0D和0A表示的,也就是CR和LF的ASCII编码。而在UNIX类系统中换行只有一个字符LF,所以UNIX中的文本文件在windows中用记事本打开会出现不可解析字符且丢失换行格式,所有字符连成一行。
    因为windows下的记事本读到LF时不知道这就是换行(只有CR和LF连续出现才能解释为换行),于是当作不可打印字符处理,就是一个黑色方框。CR和LF分别表示“回车”(carriage return)和“换行”(line feed),ASCII编码为13和10,在C语言中用\r和\n表示。
    为什么windows下要用两个字符表示换行?这就是今天要讲的故事:《回车的传说》

    在计算机刚刚诞生之时,广泛使用Teletype公司制造的一种古老的终端(console terminal)电传打字机ASR33。ASR33每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,打印头从行尾移到行首再下移一行要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失,那时可没有缓冲区暂存。Teletype的研究人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。

( 1968年盖茨在湖滨中学玩的就是这种机器,他们通过这种终端编写BASIC程序。因为 ASR 33只使用大写字母,所以BASIC程序以大写字母为主)
    后来,计算机的史前时代结束了,小型机诞生了,现代文明的键盘也发明了,但回车和换行的概念仍被保留下来。一些计算机设计者认为在每行结尾加两个字符太浪费也没有必要了,加一个就可以。于是就出现了分歧。
    Unix系统里使用<line feed>表示换行,每行结尾只有一个换行符\n,MSDOS和Windows系统里面每行结尾是<回车><换行>(<carriage return><line feed>)即\r\n,Apple的Mac系统里每行结尾是<回车>(<carriage return>)即\r。
一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,某些文本编辑器可能在每行的结尾会多出一个^M符号。

相关文章推荐

回车和换行区别

  • 2013-02-04 16:42
  • 15KB
  • 下载

回车与换行的区别详解

  • 2011-04-18 10:30
  • 13KB
  • 下载

传说中C#与JAVA的区别-------LINQ 入门

一:与LINQ有关的语言特性   1.隐式类型     (1)源起       在隐式类型出现之前,       我们在声明一个变量的时候,       总是要为一个变量...

回车(CR)与换行(LF), '\r'和'\n'的区别

回车CR和换行LF的区别

回车和换行的区别(Linux程序设计第4版)

学习C语言的时候就一直没有搞清楚,这个回车和换行到底又啥子区别,这两个不都是通过按Enter键来搞定的嘛,结果今天看Linux程序设计第4版第五章147页时搞清楚原来是因为在Linux同Unix系统一...

回车与换行的区别

我一直没有搞得很清楚,回车和换行符有啥区别。 记得大一时,C语言老师就说过回车、换行,但都没说得那么细。前两天,看写两句Perl代码时,忽然想起区别一下回车和换行(\r和\n)。现在理解清楚了,记个...

在浏览器地址栏按回车、F5、Ctrl+F5刷新网页的区别

不少同学问,不都是刷新吗?还有什么区别?其实,还是有的。其中,在地址栏按回车又分为两种情况。一是请求的URI在浏览器缓存中未过期,此时,使用Firefox的firebug插件在浏览器里显示的HTTP请...
  • yui
  • yui
  • 2011-07-04 21:16
  • 10378

回车与换行的区别

我一直没有搞得很清楚,回车和换行符有啥区别。 记得大一时,C语言老师就说过回车、换行,但都没说得那么细。前两天,看写两句Perl代码时,忽然想起区别一下回车和换行(\r和\n)。现在理解清楚了,记个笔...

换行符“\n”与回车符“\r”的区别

本篇转载的其他人的,表示感谢先。 符号    ASCII码      意义 \n        10    ...

回车与换行的区别

回车与换行的区别 我一直没有搞得很清楚,回车和换行符有啥区别。 记得大一时,C语言老师就说过回车、换行,但都没说得那么细。前两天,看写两句Perl代码时,忽然想起区别一下回车和换行(\r和\n...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)