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

ash*_*hna 464 newline control-characters ansi-escape carriage-return linefeed

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

  1. 回程

  2. 换行

  3. 表格饲料

小智 588

回车意味着返回到当前行的开头而不向下行进.该名称来自打印机的托架,因为名称创建时监视器很少见.这通常以"\ r \n"缩写,缩写为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)及以下. (10认同)
  • FF 字符今天可能看起来很奇怪(与“CTRL-G”钟形字符一起),但是当视频显示远不那么常见并且硬拷贝终端被用作数据显示时,它具有更多的相关性。 (2认同)
  • “我不知道使用CR的Mac的历史。” 那可能来自使用CR的Apple II。CR在Commodore和Tandy等其他8位系统上也很常见。ASCII在这些系统上不是通用的:Commodore使用PETSCII,其LF为0x8d(!)。Atari根本没有LF角色。无论出于何种原因,CR = 0x0d都是差不多的标准。 (2认同)

小智 112

\r 是回车并将光标向后移动,就像我将 -

printf("stackoverflow\rnine")
ninekoverflow
Run Code Online (Sandbox Code Playgroud)

意味着它已将光标移动到"stackoverflow"的开头并覆盖起始的四个字符,因为"九"是四个字符长.

\n 是新行字符,它改变了行并将光标移到新行的开头,如 -

printf("stackoverflow\nnine")
stackoverflow
nine
Run Code Online (Sandbox Code Playgroud)

\f 是形式饲料,它的使用已经过时,但它用于给出缩进像

printf("stackoverflow\fnine")
stackoverflow
             nine
Run Code Online (Sandbox Code Playgroud)

如果我会写像 -

printf("stackoverflow\fnine\fgreat")
stackoverflow
             nine
                 great
Run Code Online (Sandbox Code Playgroud)

  • 换页不用于缩进。如果您将其中很少的打印机发送给打印机,它将吐出纸张。您所描述的\ f实际上是\ v-一个垂直选项卡,授予它们在控制台中看起来相同。 (5认同)
  • 但是这个例子不适用于高级语言! (2认同)

小智 35

简而言之 :

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

Line_Feed(\n0xA):在下一行开始时控制。

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

  • 应该鼓励这样简洁的回答。 (7认同)

tan*_*ius 31

看看维基百科:

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


小智 24

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

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

例如:

用c ++编写这段代码

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

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

}
Run Code Online (Sandbox Code Playgroud)

当你编译它时它生成一个exe(例如abc.exe)

然后您可以使用以下方法将输出重定向到文件:

abc > xyz.doc

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


wxi*_*xie 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.


Amb*_*ber 18

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

由于我们不再使用纸质打印机终端,这些行为不再具有真正的相关性,但用于发出信号的人物已经陷入各种各样的化身.

  • @MarkLakata True适用于打字机,但这个答案是关于旧的打印终端.例如,DEC LA36(http://www.columbia.edu/cu/computinghistory/la36.html). (2认同)

Dic*_*tin 12

考虑使用IBM 1403抗冲击打印机.CR将打印头移动到线的起点,但没有推进纸张.这允许"套印",在一条线上放置多行输出.下划线之类的事情就是这样实现的,就像BOLD打印一样.LF将纸张推进了一条线.如果没有CR,则下一行将打印为交错步骤,因为LF不会移动打印头.FF将论文提升到下一页.它通常还会将打印头移动到新页面上第一行的开头,但您可能需要CR.可以肯定的是,大多数程序员在页面的最后一行末尾编码CRFF而不是CRLF,因为FF创建的额外CR无关紧要.


Eug*_*ene 8

作为补充,

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

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

3,换页:这是一个打印机术语,我喜欢这个帖子中的解释.

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

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

它几乎已经过时了,您可以参考Escape序列\ f - 表单Feed - 究竟是什么?详细解释.

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

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 pre-POSIX实现

0x9B:使用ATASCII ASCII变量的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假脱机文本输出.