什么是换行、换行和换行?

以下控制字符的含义:

  1. 回车

  2. 换行

  3. 换页

631343 次浏览

看看维基百科:

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

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

在老式的纸质打印机终端上,前进到下一行需要两个动作:将打印头移回水平扫描范围的起点(回车)和前进正在打印的纸卷(换行)。

由于我们不再使用纸质打印机终端,这些动作已经无关紧要了,但用来发出信号的字符以各种形式存在。

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

实际上,将它们放在任何字符串中,都会对字符串的打印结果产生影响。

回车表示返回到当前行的开头,不向下推进。这个名字来源于打印机的支架,因为在这个名字被创造出来的时候显示器还很少见。这通常转义为" \ ",缩写为CR, ASCII值为13或0xD。

换行表示向下移动到下一行;然而,它已被重新命名。用作“换行符”,它是终止行(通常与分离行混淆)。这通常转义为"\n",缩写为LF或NL, ASCII值为10或0xA。CRLF(而不是CRNL)用于对"\r\n"

换页表示向下前进到下一个“页面”。它通常用作页面分隔符,但现在也用作部分分隔符。文本编辑器可以在“插入分页符”时使用此字符。这通常转义为"\f",缩写为FF, ASCII值为12或0xC。


作为控制字符,它们可以有不同的解释方式。

最重要的解释是这些字符如何划线。在Unix(包括OS X)上以NL结尾,在Windows上以CRLF结尾,在旧的mac上以CR结尾。请注意,对于完全相同的字符,从LF到NL的含义的转换,给出了Windows和Unix之间的差异,这也是为什么许多Windows程序使用CRLF到单独的而不是终止行。许多文本编辑器可以读取这三种格式中的任何一种格式的文件并在它们之间进行转换,但并非所有实用程序都可以。

表单提要不太常用。作为页面分隔符,它只能出现在行之间或文件的开始或结束处。

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

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

为例:

用c++编写以下代码

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


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


}

当你编译这个时,它会生成一个exe(对于ex. abc.exe)

然后你可以使用这个重定向输出到一个文件:

# EYZ0

然后打开文件xyz.doc,你可以看到你好,嗨....之间的实际分页

换行符和换行符也类似于打字机,只要轻轻推一下换行符左边的手柄(纸张所在的位置),纸张就会绕着圆筒旋转一小圈,使文件向前移动一行。如果你已经输入了一行,想继续下一行,你就会更用力地向前推一行,并将支架一直向右滑动,然后随着支架的移动再次从左向右输入。不用说,换行是那个时代所有文字处理的默认设置。P: D

考虑一台IBM 1403冲击式打印机。CR将打印头移动到行首,但没有前进纸张。这允许“套印”,将多行输出放在一行上。像加下划线这样的东西都是通过这种方式实现的,就像BOLD print一样。LF将论文推进了一行。如果没有CR,下一行将作为交错步打印,因为LF没有移动打印头。FF把论文推进到下一页。它通常还将打印头移动到新页面上第一行的开头,但您可能需要CR来实现这一点。可以肯定的是,大多数程序员在页面最后一行的末尾编写CRFF而不是CRLF,因为FF创建的额外CR无关紧要。

除上述信息外,LF (\n)和CR (\r)还有一段有趣的历史。 [原作者:阮一峰来源:http://www.ruanyifeng.com/blog/2006/04/post_213.html] 在计算机出现之前,有一种电传打字机叫做33型电传打字机。每秒可以打印10个字符。但这样做有一个问题,打印完每行后,需要0.2秒才能移动到下一行,也就是打印2个字符的时间。如果在这0.2秒内传输了一个新字符,那么这个新字符将丢失

于是科学家们找到了解决这个问题的方法,他们在每行后面加了两个结尾字符,一个是“回车”,这是告诉打印机将打印头移到左边。另一个是“换行”,它告诉打印机将纸张上移一行。

后来,计算机变得流行起来,这两个概念都用在了计算机上。当时的存储设备很贵,所以有科学家说每行末尾加两个字很贵,一个就够了,所以用哪个就有一些争论。

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

\r是回车,将光标向后移动,就像i将执行-一样

printf("stackoverflow\rnine")
ninekoverflow

表示已将光标移到“stackoverflow”的开头,并覆盖开始的4个字符,因为“nine”有4个字符长。

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

printf("stackoverflow\nnine")
stackoverflow
nine

\f是换页,它的用途已经过时了,但它被用于缩进

printf("stackoverflow\fnine")
stackoverflow
nine

如果我这样写

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

作为补充,

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

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

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

如果您正在为一台20世纪80年代风格的打印机编程,它将弹出 纸,开始新的一页。你几乎可以肯定永远不需要 它。< / p >

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

它几乎已经过时了,您可以参考转义序列\f - form feed -它到底是什么?来获得详细的解释。

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

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

CR:康懋达8位机,Acorn BBC, ZX Spectrum, TRS-80,苹果 II家族,Oberon,经典的Mac OS到版本9,MIT Lisp 机器和OS-9

RS: QNX pre-POSIX实现

0x9B:雅达利8位机器使用ATASCII的ASCII变体(155 in 十进制)< / p >

CR+LF:微软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假脱机文本输出。

简而言之:

  • 回车 (\r0xD):控制同一行上的开始
  • 换行 (\n0xA):控制下一行上的开始
  • 换页 (\f0xC):控制下一个页面上的开始

更多细节和更多控制字符可以在以下页面找到:< em >控制字符< / em >

很多(50)年前,当我在皇家信号公司当学徒时,电传打字机和打字机都有“行距”。上面有打印头。当你按回车键时,马车就会飞到左边。因此有了回车(CR)。你可以只返回回车,但在机械打字机上,你可以使用杠杆(很像电吉他上的颤音杠杆),它也可以进行换行。你的下一个问题是为什么你不需要换行?在那些日子里,为了删除字符,我们会做一个CR,然后在锤头和纸之间使用tip -ex之类的纸,然后输入相同的键,用白色墨水覆盖。一些花哨的打字机有一个你可以按的键。就是这样。