什么是回车,换行和换页?

以下控制字符的含义是什么:

  1. 回车

  2. 换行

  3. 换页

回车意味着返回到当前行的开始而不向前进。 这个名字来自打印机的马车,因为这个名字被创造出来的时候显示器是很less见的。 这通常以“\ r”格式转义,缩写为CR,ASCII码值为13或0x0D。

换行意味着向下推进到下一行; 然而,它已被重新用途和改名。 用作“换行”,它终止行(通常与分隔行混淆)。 这通常以“\ n”格式转义,缩写为LF或NL,ASCII值为10或0x0A。 CRLF(但不是CRNL)用于“\ r \ n”对。

换页方式向下推进到下一个“页面”。 它通常用作页面分隔符,但现在也用作分区分隔符。 (在源代码中很less使用逻辑上独立的function或function组)。 这通常被转义为“\ 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的换行符之后),或者在开始或文件结尾。

\r是回车,并将光标移回,就像我会做 –

 printf("stackoverflow\rnine") ninekoverflow 

意味着它已经将光标移动到“stackoverflow”的开头,并且由于“nine”是四个字符长度而覆盖了开始的四个字符。

\n是换行的新行字符,并将光标移动到新行的开始处,如 –

 printf("stackoverflow\nnine") stackoverflow nine 

\f是换页,它的使用已经过时了,但是用来给缩进

 printf("stackoverflow\fnine") stackoverflow nine 

如果我会写像 –

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

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

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

例如:

用c ++编写这段代码

 void main() { clrscr(); cout<<"helloooooo" ; cout<<"\f"; cout<<"hiiiii" ; } 

并且当你编译它时,它会生成一个exe(例如abc.exe

那么你可以使用以下命令将输出redirect到一个文件:

abc > xyz.doc

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

看看维基百科 :

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

除了上面的信息,还有一个有趣的LF(\ n)和CR(\ r)的历史。 [原创作者:阮一峰资料来源: http ://www.ruanyifeng.com/blog/2006/04/post_213.html ]在电脑出来之前,有一种称为Teletype Model 33的电传打字机。它可以打印10个字符第二。 但是有一个问题,打印完每一行之后,移动到下一行需要0.2秒,这是打印2个字符的时间。 如果在这0.2秒内传送了新的angular色,那么这个新angular色将会丢失。

所以科学家们find了解决这个问题的办法,在每一行后面加上两个结尾字符,一个是“回车”,就是告诉打印机把打印头带到左边。 另一个是“换行”,它告诉打印机将纸张向上移动1行。

后来电脑开始stream行起来,这两个概念被用在电脑上。 那个时候,存储设备非常昂贵,所以一些科学家说在每一行的末尾添加两个字符是很贵的,一个就足够了,所以有一些关于使用哪一个的争论。

在UNIX / Mac和Linux中,'\ n'放在每行的末尾,在Windows中,'\ r \ n'放在每行的末尾。 这种使用的结果是,如果在Windows中打开,UNIX / Mac中的文件将显示在一行中。 如果在UNIX或Mac中打开,Windows中的文件在每行的末尾将有一个^ M。

在旧的纸质打印机terminal上,前进到下一行涉及到两个操作:将打印头移回到水平扫描范围的起点(回车),并推进正在打印的纸卷(换行)。

由于我们不再使用纸质打印机terminal,这些行为已经不再那么重要了,但是用来表示它们的字符已经停留在各种化身中。

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

回车和换行也是打字机的一个参考,因为在小车左侧(纸走的地方)的小把手上,纸张会在气缸周围旋转一小段,推进logging一行。 如果您input完一行,并想继续下一行,则您更加努力地向前推进,并将滑架滑到最右边,然后在每次击键时随着滑架移动而再次从左到右重新打字。 不用说,单词换行是该时代所有文字处理的默认设置。 病人:d

作为补充,

1, 回车 :这是一个打印机术语,意思是将打印位置改为当前行的开头。 在计算机世界中,大多数情况下是指回到当前行的开始,而很less代表新行。

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

3, 换页 :这是一个打印机术语,我喜欢这个线程的解释。

如果您正在编写20世纪80年代风格的打印机,则会popup纸张并开始新的页面。 你几乎肯定不需要它。

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

它几乎已经过时了,你可以参考逃逸序列\ f – 表单饲料 – 究竟是什么? 详细的解释。

请注意,我们可以在某些平台上使用CR或LF或CRLF代replace行符,但换行符不能在其他平台上使用。 有关详细信息,请参阅Wiki Newline 。

LF:Multics,Unix和类Unix系统(Linux,OS X,FreeBSD,AIX,Xenix等),BeOS,Amiga,RISC OS等

CR:Commodore 8位机器,Acorn BBC,ZX Spectrum,TRS-80,Apple II系列,Oberon,经典的Mac OS版本9,MIT Lisp Machine和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假脱机文本输出。

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

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

在实践中,你把它们放在任何一个string中,它会影响string的打印输出。