回车”(carriage return)和”换行”(line feed)的区别和来历-(附:ASCII表)

这两天研究小票打印机编程手册,遇到这样一个问题:

LF,即Line Feed,中文意思“换行”;CR,即Carriage Return,中文意思“回车”。但是我们通常把这两个混为一谈。既然设置成2个,则肯定有其存在的道理,查了一下资料,与大家分享。

关于“回车”(carriage return)和“换行”(line feed)这两个概念的来历和区别。
在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。

这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。

后来,计算机发明了,这两个概念也就被般到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧。

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

c++语言编程时(windows系统)

\r (return)就是return 回到 本行 行首 这就会把这一行以前的输出 覆盖掉

如:
int main() {

cout << “hahaha” << “\r” << “xixi” ;

}
最后只显示 xixi 而 hahaha 背覆盖了

\n (newline)是回车+换行 把光标 先移到 行首 然后换到下一行 也就是下一行的行首拉

int main() {

cout << “hahaha” << “\n” << “xixi” ;

}
则 显示
hahaha
xixi

在vb程序里,要想移到下一行,也得写vbCrlf,或者char(13)+char(10),二者连用才能实现真正的回车。所以对于回车和换行的支持,不同的语言,不同的环境,对其的支持和定义也各不相同。

附:ASCII表

原文地址:https://www.cnblogs.com/ricksteves/p/9899907.html

时间: 2024-11-07 20:35:00

回车”(carriage return)和”换行”(line feed)的区别和来历-(附:ASCII表)的相关文章

菜鸟随笔(1)---Windows、Unix、Mac不同操作系统的换行问题 回车符\r和换行符\n

一只菜鸟横空出世,码农世界闯一闯,每天进展多一丢丢. Windows.Unix.Mac不同操作系统的换行问题 回车符\r和换行符\n 一.概念: 换行符'\n'和回车符'\r' (1)换行符就是另起一行 --- '\n' 10 换行(newline) (2)回车符就是回到一行的开头 --- '\r' 13 回车(return) 所以我们平时编写文件的回车符应该确切来说叫做回车换行符 CR: 回车(Carriage Return) \rLF: 换行(Line Feed) \n 二.应用: (1)在

android修改布局后遇到 Incorrect line ending: found carriage return (\r) without corresponding newline (\n) 错误

遇到这个问题,只需要在eclipse中的Project选项菜单中选择clean,选中当前的项目.clean之后就不会报错了. 如图: Clean will discard all build problems and built states. The projects will be rebuilt from scratch. 大致意思就是Clean之后 ADT会清除之前编译产生的文件和保存的状态. 重新编译就好了. 总之遇到特别奇怪的bug时,不妨clean之后,重新编译一次,也许就解决了.

回车符(CR)与换行符(LF), &#39;\r&#39;和&#39;\n&#39;的区别

回车”(Carriage Return)和“换行”(Line Feed)这两个概念的来历和区别.在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33,Linux/Unix下的tty概念也来自于此)的玩意,每秒钟可以打10个字符.但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正 好可以打两个字符.要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失. 于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符.一个叫做“回车”,告诉打字

[转]回车、换行、空格的ASCII码值—(附ASCII码表)

回车,ASCII码13,"\r"换行,ASCII码10,"\n"空格,ASCII码32 Return   =   CR   =   13   =   '\x0d'NewLine   =   LF   =   10   =   '\x0a' 回车符号和换行符号产生背景 关于“回车”(carriage return)和“换行”(line feed)这两个概念的来历和区别.在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以

【C++】小心使用文件读写模式:回车(&#39;\r&#39;) 换行(&#39;\n&#39;)问题的一次纠结经历

原来没有仔细注意C++读写文件的二进制模式和文本模式,这次吃了大亏.(平台:windows  VS2012) BUG出现: 写了一个程序A,生成一个文本文件F保存在本地,然后用程序B读取此文件计算MD5值. 将该文件上传到服务器,再用程序B将文件从服务器上下载下来计算MD5值,神奇的发现两次计算的MD5值不一样,文件被谁改了?? 排除问题: 1.首先对比了生成文件F和上传到服务器的文件,发现文件复制过程无差错,是同一个文件. 2.用程序B下载文件F后,保存在本地,发现文件与原文件F不一致,对比二

Windows、Unix、Mac不同操作系统的换行问题-剖析回车符\r和换行符\n

转载链接:http://blog.csdn.net/tskyfree/article/details/8121951 一.概念: 换行符‘\n’和回车符‘\r’ (1)换行符就是另起一行  --- '\n' 10 换行(newline) (2)回车符就是回到一行的开头 --- '\r' 13 回车(return) 所以我们平时编写文件的回车符应该确切来说叫做回车换行符     二.应用: (1)在微软的MS-DOS和Windows中,使用“回车CR('\r')”和“换行LF('\n')”两个字符

C++操控器endl与换行符&#39;\n&#39;的区别

?? 很多C++的初学者都以为endl只是'\n'换行符的替代者,这是一种片面的看法,因为endl不仅仅在在输出流中插入了'\n',而且还有刷新缓冲区的作用.输入输出流会把获取到的数据先存放在缓冲区中,当计算机不忙的时候,会实时地把数据处理掉,这时候'\n'和endl没有什么太大的区别,当计算机任务繁重的时候,就会默认等到缓冲区被填满,再一块处理掉这些数据,这时候endl就开始发挥作用,它会告诉计算机立即开始处理缓冲区里的数据. cout << a ; cout << b ; re

return、break、continue的区别

一.定义 return:语句用于终止当前方法运行,返回到调用该方法的语句处.如有返回值,则在return后面提供相应的返回值. break:其主要用于循环语句和switch语句,其作用均是强行终止语句的执行. continue:主要用于循环语句中,作用是跳过本次循环,继续执行下一次. 二.区别 从定义中可看出,return与break.continue的区别较大,return的作用范围是在一个方法内,其终止的是方法的运行,而break与continue终止的是循环或者switch语句的执行,br

JAVA Eclipse Incorrect line ending found carriage return 怎么办

点击项目-清理即可 ? ?