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


500

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

  1. 回车

  2. 换行

  3. 换页


14
“回车”是什么意思?我在笔记本电脑上看不到任何“托架”“返回”。:s
Jean Hominal

12
@JeanHominal基本上是指光标(或古代打字机中的指针),而return表示返回到该行的开头。
SOFe

我没有在“终端”“窗口”中看到任何电线端接(或与此相关的任何玻璃窗格),也没有在/ dev / tty1上附加“ teletype”。他们都变成了隐喻。
Piskvor在

Answers:


621

回车指的是返回当前行的开头而不向下移动。该名称来自打印机的托架,因为在创建该名称时很少使用监视器。通常将其\r缩写为CR,转义为ASCII值130x0D

换行意味着向下前进到下一行;但是,它已被重新调整用途并重命名。用作“换行符”,它终止行(通常与分隔行混淆)。通常以LF或NL的\n缩写形式转义,并具有ASCII值或。该对使用CRLF(但不使用CRNL)。100x0A\r\n

换页意味着向下前进到下一个“页面”。它通常用作页面分隔符,但现在也用作部分分隔符。(在源代码中通常不使用它来划分逻辑上独立的函数或函数组。)当您“插入分页符”时,文本编辑器可以使用此字符。这通常为逃脱\f,简称FF,并具有ASCII值120x0C


作为控制字符,可以用各种方式来解释它们。

最常见的区别(也许是唯一值得担心的区别)是:在Windows上以CRLF结尾,在Unix上以NL结尾,而在较旧的Mac上则以CR结尾(OS X的情况已与Unix相似)。请注意,从LF到NL的含义转换,对于完全相同的字符,给出了Windows和Unix之间的差异。(Windows当然比Unix更新,因此它没有采用这种语义转换。我不知道使用CR的Mac的历史。)许多文本编辑器可以读取这三种格式中的任何一种并在它们之间进行转换。 ,但并非所有实用程序都可以。

换页有点有趣(尽管很少直接使用),并且使用页面分隔符的常规定义,换页只能在行之间(例如,在NL,CRLF或CR的换行符之后)或在开始或结束时出现。文件末尾。


10
我可以确认OS X使用NL作为行终止符,就像Unix(因为OS X Unix)一样。CR在Mac OS 9及以下版本中使用。
罗里·奥肯

1
FF字符在今天可能看起来很奇怪(连同“ CTRL-G”钟形字符),但是当视频显示变得不那么普遍并且硬拷贝终端用作数据显示时,它具有更大的相关性。
里克·萨瓦斯

那不是饲料控制\x0c吗?
Tjorriemorrie

2
“我不知道使用CR的Mac的历史。” 那可能来自使用CR的Apple II。CR在Commodore和Tandy等其他8位系统上也很常见。ASCII在这些系统上不是通用的:Commodore使用PETSCII,其LF为0x8d(!)。Atari根本没有LF角色。无论出于何种原因,CR = 0x0d都是差不多的标准。
Ssswift

125

\r 是回车,然后将光标移回,就像我会做的那样-

printf("stackoverflow\rnine")
ninekoverflow

表示它已将光标移至“ stackoverflow”的开头并覆盖了起始的四个字符,因为“九”的长度为四个字符。

\n 是换行符,它将改变行并将光标移至新行的开头,例如-

printf("stackoverflow\nnine")
stackoverflow
nine

\f 是换页,它的使用已过时,但用于缩进,例如

printf("stackoverflow\fnine")
stackoverflow
             nine

如果我会写像-

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

3
但是此示例不适用于高级语言!
新浪卡凡迪

@ᔕIᑎᗩKᗩᖇᐯᗩᑎᗪI:您至少可以使用printfcoreutils的实用程序在Linux shell中执行相同的操作。甚至使用echo -en内置的bash。
罗斯兰

如何将所有行作为文件中的一行传递?
Paras Singh '18

8
换页不用于缩进。如果您将其中很少的打印机发送给打印机,它将吐出纸张。您所描述\f的实际上是\v-垂直选项卡,授予它们在控制台中看起来相同。
cprn

printf("123\f456\f789");在控制台上显示/> <bold> 123456789 </ bold>。
Mayur

31

看看维基百科

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


25

\f用于分页符。您不会在控制台中看到任何效果。但是,当您在文件中使用此字符常量时,您会看到区别。

另一个示例是,如果您可以将输出重定向到文件,则不必编写文件或使用文件处理。

例如:

用C ++编写此代码

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

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

}

并在编译时生成一个exe(例如。abc.exe

那么您可以使用以下命令将输出重定向到文件:

abc > xyz.doc

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


21

除了上述信息外,还有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行尾。
乔纳森·克罗斯

“如果在Windows中打开,则UNIX / Mac中的文件将显示在一行中。” WRITE.EXE(又名Wordpad)可以很好地显示它们。
thecarpy

18

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

由于我们不再使用纸张打印机终端,因此这些动作不再是真正相关的,但是用来表示它们的字符已经缠在一起。


实际上,“回车”不会将打印头向左移动,而是将保持压纸卷轴的滑架向右移动。过去有一个很长的杠杆,它是由左手操纵的。参见en.wikipedia.org/wiki/Typewriter
Mark Lakata 2012年

2
@MarkLakata对于打字机来说为True,但是此答案与旧的打印终端有关。例如,DEC LA36(columbia.edu/cu/computinghistory/la36.html)。
彼得·卡多纳

12

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


这是唯一说明回车的完整含义的答案。

12

简而言之 :

Carriage_return(\r0xD):在同一行的开始处进行控制。

Line_Feed(\n0xA):在下一行的开始处进行控制。

form_feed(\f0xC):在下一页开始时进行控制。


2
应该鼓励这样简洁的答案。
user5280911

10

作为补充,

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

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

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

如果您正在为1980年代风格的打印机编程,它将弹出纸张并开始新的页面。您几乎可以肯定永远不需要它。

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

它几乎已经过时了,您可以参考转义序列\ f-换页-究竟是什么?详细说明。

请注意,在某些平台上,我们可以使用CR或LF或CRLF来表示换行符,但是在某些其他平台上,它们不能支持换行符。有关详细信息,请参阅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,9版以下的经典Mac OS,MIT Lisp Machine和OS-9

RS:QNX POSIX之前的实现

0x9B:使用ASCII的ATASCII变体的Atari 8位计算机(十进制155)

CR + LF:Microsoft Windows,DOS(MS-DOS,PC DOS等),DEC TOPS-10,RT-11,CP / M,MP / M,Atari TOS,OS / 2,Symbian OS,Palm OS, Amstrad CPC,以及大多数其他早期的非Unix和非IBM操作系统

LF + CR:Acorn BBC和RISC OS假脱机文本输出。


3

“ \ n”是换行符。这意味着结束当前行并为正在阅读的任何人转到新行。


3

回车和换行也与打字机有关,因为只要轻轻滑动车架左侧的手柄(纸张进入的位置),纸张就会在滚筒上旋转少量,从而使滚筒前进。记录一行。如果您已经完成了一行的输入,并且想要继续到下一行,则您会用力地推动,前进一行并将滑架一直向右滑动,然后在每次击键移动时重新恢复从左向右的输入。不用说,自动换行是该时代所有文字处理的默认设置。P:D


2

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

实际上,您可以将它们放在任何字符串中,这将影响字符串的打印输出。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.