331

什么是以下控制字符的含义是:什么是回车,换行和换页?

  1. 回车

  2. 换行

  3. 进纸

+6

“回车”是什么意思?我的笔记本上没有看到“回车”。 :s – 2010-06-22 08:43:17

+2

@JeanHominal滑架基本上是指光标(或古代打字机中的指针),并返回返回到该行开头的方法。 – SOFe 2016-08-09 07:39:07

回答

21

看一看Wikipedia

基于ASCII或兼容字符集的系统分别使用LF(换行,'\ n',0x0A,十进制10)或CR(回车符'\ r',0x0D,十进制13),或CR后跟LF(CR + LF,0x0D 0x0A)。这些字符基于打印机命令:换行表示应从打印机送出一行纸,并且回车指示打印机托架应返回到当前行的开头。

2

“\ n”是换行字符。这意味着结束现在的生产线,并为正在阅读它的任何人提供新的线路。

12

在旧的纸质打印机终端上,前进到下一行涉及两项操作:将打印头移回水平扫描范围的开始位置(回车),并推进正在打印的纸卷(换行) 。

由于我们不再使用纸质打印机终端,这些操作已经不再适用了,但用于表示它们的字符已经停留在各种化身中。

+0

实际上,“回车”不会将打印头移动到左侧,但会将保持压板的托架移动到右侧。过去曾有一个由左手启动的长杠杆来完成此操作。见http://en.wikipedia.org/wiki/Typewriter – 2012-11-06 22:09:45

+2

@MarkLakata对于打字机来说是正确的,但这个答案是关于旧的打印终端。例如,DEC LA36(http://www.columbia.edu/cu/computinghistory/la36.html)。 – 2013-08-23 21:18:21

0

这些是非打印字符,与“新行”的概念有关。 \ n是换行。 \ r是回车。在不同的平台上,它们具有不同的含义,相对于有效的新行。在Windows中,新行是\ r \ n。在Linux中,\ n。在Mac中,\ r。

实际上,你把它们放在任何字符串中,它会影响字符串的打印输出。

463

回车方式返回到当前行的开头而不向前进。这个名字来自打印机的马车,因为当这个名字被创造出来时,显示器很少见。这通常以“\ 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的换行符序列之后)或在文件的开头或结尾。

+8

我可以确认[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

+1

FF字符今天可能看起来很奇怪(与“CTRL-G”铃声字符一起),但当视频显示器不太常见并且硬拷贝终端被用作数据显示器时,它具有更多的相关性。 – 2013-11-27 15:11:37

+0

是不是饲料控制'\ x0c'? – Tjorriemorrie 2015-07-01 07:29:22

25

\f用于分页符。 在控制台中看不到任何效果。但是当你在你的文件中使用这个字符常量时,你可以看到差异。

其他例子是,如果你可以将你的输出重定向到一个文件,那么你不必编写文件或使用文件处理。

对于前:

写这样的代码在C++

void main()  
{ 
    clrscr(); 
    cout<<"helloooooo" ; 

    cout<<"\f"; 
    cout<<"hiiiii" ; 

} 

,当你编译这个它生成EXE(为前abc.exe。)

那么您可以将输出重定向到一个使用此文件:

abc > xyz.doc

然后打开文件xyz.doc你可以看到hellooo和hiiii之间的实际分页符....

+9

我不知道这将是一个有效的'.doc'。 – NReilingh 2015-06-06 19:44:04

+1

不是! Word也可以读取实际的文本文件。 – llouk 2017-02-02 18:17:11

3

回车换行也都是打字机的引用,在该手柄上有一个小的上推纸张左侧(纸张所在的位置),纸张会在圆柱体周围旋转一小部分,使文档前进一行。如果您输入完一行并想继续下一行,则您更加努力地向前推动一条线并将滑架滑动至右侧,然后在每次击键时随着滑架移动而恢复从左至右再次打字。不用说,单词换行是该时代所有文字处理的默认设置。 P:D

10

考虑一台IBM 1403冲击式打印机。 CR将打印头移动到行的开头,但没有推进纸张。这允许“叠印”,将多行输出放在一行上。像BOLD印刷品一样,以这种方式实现了像下划线这样的事情。 LF将纸张推进一行。如果没有CR,则下一行将作为交错步进打印,因为LF没有移动打印头。 FF将文件推进到下一页。它通常也将打印头移动到新页面的第一行的开头,但您可能需要CR。可以肯定的是,大多数程序员在页面最后一行的末尾编码CRFF而不是CRLF,因为由FF创建的额外CR无关紧要。

15

除了上面的信息,还有一个有趣的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。

+1

随着OSX(基于BSD unix)的发布,Mac切换到'\ n' - Unix行结束。 – 2016-03-19 09:25:37

+0

“如果在Windows中打开,UNIX/Mac中的文件将显示在一行中。” 'WRITE.EXE'(又名写字板)可以很好地显示它们。 – thecarpy 2017-12-08 14:17:45

69

\r是回车,光标移回一样,如果我会做 -

printf("stackoverflow\rnine") 
ninekoverflow 

意味着它已经将光标移动到“计算器”的开始,因为“九”将覆盖开始四个字符时四个字符长。

\n是新行字符从而改变线路,并采取光标移动到新行的开始喜欢 -

printf("stackoverflow\nnine") 
stackoverflow 
nine 

\f是进纸,其使用已经过时,但它是用于给缩进像

printf("stackoverflow\fnine") 
stackoverflow 
      nine 

如果我会写喜欢 -

printf("stackoverflow\fnine\fgreat") 
stackoverflow 
      nine 
       great 
+0

但是这个例子不适用于高级语言! – 2016-10-27 20:08:26

+0

@ᑎᗩᑎᗩKᗩᖇᐯᗩᑎᗪ它的确如此:您至少可以在Linux shell中使用coreutils的'printf'实用程序来做同样的事情。甚至使用'echo -en'这是一个bash内建的。 – Ruslan 2017-05-10 17:13:31

+0

如何将所有行作为文件中的一行传递? – 2018-01-19 10:11:49

5

作为补充,

1,回车:这是一台打印机术语意味着改变打印位置当前行的开头。在计算机世界中,这意味着在大多数情况下返回到当前行的开头,但很少代表新行。

2,换行:这是打印机术语,意思是将纸张推进一行。因此,回车符和换行符一起用于在新行的开头打印。在计算机世界中,它通常与换行符具有相同的含义。

3,换页:这是打印机术语,我喜欢this thread中的解释。

如果您是为20世纪80年代风格的打印机编程,它将弹出 纸张并开始一个新页面。你几乎肯定不会需要 它。

http://en.wikipedia.org/wiki/Form_feed

这几乎是过时的,你可以参考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假脱机文本输出。