Answers:
回车指的是返回当前行的开头而不向下移动。该名称来自打印机的托架,因为在创建该名称时很少使用监视器。通常将其\r
缩写为CR,转义为ASCII值13
或0x0D
。
换行意味着向下前进到下一行;但是,它已被重新调整用途并重命名。用作“换行符”,它终止行(通常与分隔行混淆)。通常以LF或NL的\n
缩写形式转义,并具有ASCII值或。该对使用CRLF(但不使用CRNL)。10
0x0A
\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的换行符之后)或在开始或结束时出现。文件末尾。
\x0c
吗?
\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
printf
coreutils的实用程序在Linux shell中执行相同的操作。甚至使用echo -en
内置的bash。
\f
的实际上是\v
-垂直选项卡,授予它们在控制台中看起来相同。
printf("123\f456\f789");
在控制台上显示/> <bold> 123456789 </ bold>。
\f
用于分页符。您不会在控制台中看到任何效果。但是,当您在文件中使用此字符常量时,您会看到区别。
另一个示例是,如果您可以将输出重定向到文件,则不必编写文件或使用文件处理。
例如:
用C ++编写此代码
void main()
{
clrscr();
cout<<"helloooooo" ;
cout<<"\f";
cout<<"hiiiii" ;
}
并在编译时生成一个exe(例如。abc.exe
)
那么您可以使用以下命令将输出重定向到文件:
abc > xyz.doc
然后打开文件,xyz.doc
您可以看到hellooo和hiiii ...之间的实际分页符。
除了上述信息外,还有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。
WRITE.EXE
(又名Wordpad)可以很好地显示它们。
在旧的纸张打印机终端上,前进到下一行涉及两个操作:将打印头移回水平扫描范围的起点(回车)和前进要打印的纸卷(换行)。
由于我们不再使用纸张打印机终端,因此这些动作不再是真正相关的,但是用来表示它们的字符已经缠在一起。
简而言之 :
Carriage_return(\r
或0xD
):在同一行的开始处进行控制。
Line_Feed(\n
或0xA
):在下一行的开始处进行控制。
form_feed(\f
或0xC
):在下一页开始时进行控制。
作为补充,
1,回车:这是打印机的术语,表示将打印位置更改为当前行的开头。在计算机世界中,多数情况下意味着返回当前行的开头,但很少代表新行。
2,换行:这是打印机的术语,表示将纸张前进一行。因此,回车和换行一起用于在新行的开头开始打印。在计算机世界中,它通常与换行符具有相同的含义。
3,换页:这是打印机的术语,我喜欢这个线程中的解释。
如果您正在为1980年代风格的打印机编程,它将弹出纸张并开始新的页面。您几乎可以肯定永远不需要它。
它几乎已经过时了,您可以参考转义序列\ 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假脱机文本输出。