回答
看一看Wikipedia:
基于ASCII或兼容字符集的系统分别使用LF(换行,'\ n',0x0A,十进制10)或CR(回车符'\ r',0x0D,十进制13),或CR后跟LF(CR + LF,0x0D 0x0A)。这些字符基于打印机命令:换行表示应从打印机送出一行纸,并且回车指示打印机托架应返回到当前行的开头。
“\ n”是换行字符。这意味着结束现在的生产线,并为正在阅读它的任何人提供新的线路。
在旧的纸质打印机终端上,前进到下一行涉及两项操作:将打印头移回水平扫描范围的开始位置(回车),并推进正在打印的纸卷(换行) 。
由于我们不再使用纸质打印机终端,这些操作已经不再适用了,但用于表示它们的字符已经停留在各种化身中。
实际上,“回车”不会将打印头移动到左侧,但会将保持压板的托架移动到右侧。过去曾有一个由左手启动的长杠杆来完成此操作。见http://en.wikipedia.org/wiki/Typewriter – 2012-11-06 22:09:45
@MarkLakata对于打字机来说是正确的,但这个答案是关于旧的打印终端。例如,DEC LA36(http://www.columbia.edu/cu/computinghistory/la36.html)。 – 2013-08-23 21:18:21
这些是非打印字符,与“新行”的概念有关。 \ n是换行。 \ r是回车。在不同的平台上,它们具有不同的含义,相对于有效的新行。在Windows中,新行是\ r \ n。在Linux中,\ n。在Mac中,\ r。
实际上,你把它们放在任何字符串中,它会影响字符串的打印输出。
回车方式返回到当前行的开头而不向前进。这个名字来自打印机的马车,因为当这个名字被创造出来时,显示器很少见。这通常以“\ r”格式转义,缩写为CR,并且具有ASCII值13或0x0D。
换行意味着向下推进到下一行;但是,它已被重新利用并重新命名。用作“换行”,它终止行(通常与分开行)。这通常以“\ n”格式转义,缩写为LF或NL,并且ASCII值为10或0x0A。 CRLF(但不是CRNL)用于配对“\ r \ n”。
换页方式向下推进到下一个“页面”。它通常用作页面分隔符,但现在也用作节分隔符。 (在源代码中很少使用逻辑上独立的功能或功能组。)当您“插入分页符”时,文本编辑器可以使用此字符。这通常以“\ f”格式转义,缩写为FF,并且ASCII值为12或0x0C。
作为控制字符,它们可以用各种方式解释。
最常见的差异(也许是唯一值得担心的)是线条以Windows上的CRLF,Unix上的NL和更老的Mac上的CR结束(OS X的情况已经改变为像Unix) 。请注意,从LF到NL的意义转换,对于完全相同的字符,给出了Windows和Unix之间的区别。 (当然,Windows比Unix更新,所以它没有采用这种语义转换,我不知道使用CR的Mac的历史)。许多文本编辑器可以以这三种格式中的任何一种格式读取文件,并在它们之间进行转换,但并非所有的公用事业可以。
表单提要更有趣一些(即使不太常用,直接使用),并且使用页面分隔符的通常定义,它只能在行之间(例如在NL,CRLF或CR的换行符序列之后)或在文件的开头或结尾。
我可以确认[OS X](http://en.wikipedia.org/wiki/OS_X)使用NL作为行终止符,就像Unix一样(因为OS X *是Unix)。 CR在[Mac OS 9](http://en.wikipedia.org/wiki/Mac_OS_9)及以下版本中使用。 – 2013-08-16 15:51:54
FF字符今天可能看起来很奇怪(与“CTRL-G”铃声字符一起),但当视频显示器不太常见并且硬拷贝终端被用作数据显示器时,它具有更多的相关性。 – 2013-11-27 15:11:37
是不是饲料控制'\ x0c'? – Tjorriemorrie 2015-07-01 07:29:22
\f
用于分页符。 在控制台中看不到任何效果。但是当你在你的文件中使用这个字符常量时,你可以看到差异。
其他例子是,如果你可以将你的输出重定向到一个文件,那么你不必编写文件或使用文件处理。
对于前:
写这样的代码在C++
void main()
{
clrscr();
cout<<"helloooooo" ;
cout<<"\f";
cout<<"hiiiii" ;
}
,当你编译这个它生成EXE(为前abc.exe
。)
那么您可以将输出重定向到一个使用此文件:
abc > xyz.doc
然后打开文件xyz.doc
你可以看到hellooo和hiiii之间的实际分页符....
回车换行也都是打字机的引用,在该手柄上有一个小的上推纸张左侧(纸张所在的位置),纸张会在圆柱体周围旋转一小部分,使文档前进一行。如果您输入完一行并想继续下一行,则您更加努力地向前推动一条线并将滑架滑动至右侧,然后在每次击键时随着滑架移动而恢复从左至右再次打字。不用说,单词换行是该时代所有文字处理的默认设置。 P:D
考虑一台IBM 1403冲击式打印机。 CR将打印头移动到行的开头,但没有推进纸张。这允许“叠印”,将多行输出放在一行上。像BOLD印刷品一样,以这种方式实现了像下划线这样的事情。 LF将纸张推进一行。如果没有CR,则下一行将作为交错步进打印,因为LF没有移动打印头。 FF将文件推进到下一页。它通常也将打印头移动到新页面的第一行的开头,但您可能需要CR。可以肯定的是,大多数程序员在页面最后一行的末尾编码CRFF而不是CRLF,因为由FF创建的额外CR无关紧要。
除了上面的信息,还有一个有趣的LF(\ n)和CR(\ r)的历史。 [原创作者:阮一峰来源:http://www.ruanyifeng.com/blog/2006/04/post_213.html] 电脑出现之前,有一种称为Teletype Model 33的电传打字机,它每秒可打印10个字符。但是,这有一个问题,在完成每行的打印后,它将需要0。2秒移至下一行,即打印2个字符的时间。如果在这0.2秒内传输新角色,那么这个新角色将会丢失。
因此,科学家们找到了解决这个问题的方法,他们在每行后面添加两个结束字符,一个是'回车',它告诉打印机将打印头带到左侧。另一个是'换行',它告诉打印机将纸张向上移动1行。
后来,电脑开始流行起来,这两个概念被用在电脑上。那时候,存储设备非常昂贵,所以一些科学家说,在每行末尾添加两个字符是很昂贵的,一个是足够的,所以有一些关于使用哪一个的争论。
在UNIX/Mac和Linux中,'\ n'放在每行的末尾,在Windows中,'\ r \ n'放在每行的末尾。这种使用的结果是,如果在Windows中打开,UNIX/Mac中的文件将显示在一行中。如果在UNIX或Mac中打开,Windows中的文件在每行的末尾将有一个^ M。
随着OSX(基于BSD unix)的发布,Mac切换到'\ n' - Unix行结束。 – 2016-03-19 09:25:37
“如果在Windows中打开,UNIX/Mac中的文件将显示在一行中。” 'WRITE.EXE'(又名写字板)可以很好地显示它们。 – thecarpy 2017-12-08 14:17:45
\r
是回车,光标移回一样,如果我会做 -
printf("stackoverflow\rnine")
ninekoverflow
意味着它已经将光标移动到“计算器”的开始,因为“九”将覆盖开始四个字符时四个字符长。
\n
是新行字符从而改变线路,并采取光标移动到新行的开始喜欢 -
printf("stackoverflow\nnine")
stackoverflow
nine
\f
是进纸,其使用已经过时,但它是用于给缩进像
printf("stackoverflow\fnine")
stackoverflow
nine
如果我会写喜欢 -
printf("stackoverflow\fnine\fgreat")
stackoverflow
nine
great
但是这个例子不适用于高级语言! – 2016-10-27 20:08:26
@ᑎᗩᑎᗩKᗩᖇᐯᗩᑎᗪ它的确如此:您至少可以在Linux shell中使用coreutils的'printf'实用程序来做同样的事情。甚至使用'echo -en'这是一个bash内建的。 – Ruslan 2017-05-10 17:13:31
如何将所有行作为文件中的一行传递? – 2018-01-19 10:11:49
作为补充,
1,回车:这是一台打印机术语意味着改变打印位置当前行的开头。在计算机世界中,这意味着在大多数情况下返回到当前行的开头,但很少代表新行。
2,换行:这是打印机术语,意思是将纸张推进一行。因此,回车符和换行符一起用于在新行的开头打印。在计算机世界中,它通常与换行符具有相同的含义。
3,换页:这是打印机术语,我喜欢this thread中的解释。
如果您是为20世纪80年代风格的打印机编程,它将弹出 纸张并开始一个新页面。你几乎肯定不会需要 它。
这几乎是过时的,你可以参考Escape sequence \f - form feed - what exactly is it?了详细的解释。
请注意,我们可以在某些平台上使用CR或LF或CRLF代替换行符,但换行符不能在其他平台上使用。详情请参阅wiki Newline。
LF:Multics的,Unix和类Unix系统(Linux,OS X,FreeBSD中,AIX, Xenix的等),BeOS的,Amiga的,RISC OS和其他
CR:8代位机,橡果BBC,ZX频谱,TRS-80,苹果 II系列,奥伯伦,经典的Mac OS多达9版本,MIT的Lisp 机和OS-9
RS:QNX预POSIX实现
0x9B:Atari 8位机器使用ATASCII变体的ASCII(155在 十进制)
CR + LF:Microsoft Windows,DOS(MS-DOS,PC DOS等),DEC TOPS-10, RT-11,CP/M,MP/M,Atari TOS,OS/2,Symbian操作系统,Palm OS,Amstrad CPC, 和大多数其他早期的非Unix和非IBM操作系统
LF + CR:Acorn BBC和RISC OS假脱机文本输出。
- 1. COBOL 85,回车和换行
- 2. 回车和换行XML - Java
- 3. 换行或回车
- 4. “行尾是否必须是回车/换行(CRLF)对”是什么意思?
- 5. Eclipse stdin不发送回车和换行
- 6. PHP代码和换行/回车
- 7. 回车\用Java换行
- 8. Java - 将unix换行转换为回车
- 9. 在发布aspx页面后删除回车符和换行符?
- 10. MySQL:搜索和替换具有换行/回车的目标?
- 11. Environment.NewLine有时会返回\ n换行而不是\ r \ n回车,换行
- 12. 回车换行符在SQL Server
- 13. MVC保留回车 - html中的换行
- 14. 删除换行符或回车
- 15. 拆分逗号,换行,回车
- 16. 回车换行导致操作失败
- 17. 找不到鬼回车/换行
- 18. FBConnect贴在墙上的换行/回车
- 19. 回车和换行窗口和Linux java应用程序
- 20. 如何替换回车
- 21. Sed替换为回车
- 22. Bash连接并用换行符替换回车
- 23. Perl fork为什么没有回车/换行符会破坏代码?
- 24. 在erlang中打印回车符(不是换行符)?
- 25. 明确指定换行字符而不是回车
- 26. 在PowerShell中查找/替换带回车符和换行符的字符串
- 27. 动态JavaScript文件换行符和回车
- 28. 正则表达式匹配回车和换行内的数字
- 29. Oracle REPLACE()函数未处理回车符和换行符
- 30. 如何从unix文件中删除回车符和换行符
“回车”是什么意思?我的笔记本上没有看到“回车”。 :s – 2010-06-22 08:43:17
@JeanHominal滑架基本上是指光标(或古代打字机中的指针),并返回返回到该行开头的方法。 – SOFe 2016-08-09 07:39:07