以下控制字符的含义是什么:
回车 换行 换页
回车是指返回当前行的开头而不向下推进。该名称来自打印机的马车,因为在创造该名称时显示器很少见。这通常转义为“\r”,缩写为 CR,ASCII 值为 13 或 0xD。
Linefeed 表示向下前进到下一行;但是,它已被重新利用并重新命名。用作“换行符”,它终止行(通常与分隔线混淆)。这通常转义为“\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 来分隔而不是终止行的原因。许多文本编辑器可以读取这三种格式中的任何一种格式的文件并在它们之间进行转换,但并非所有实用程序都可以。
换页很少使用。作为页面分隔符,它只能出现在行之间或文件的开头或结尾。
\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
printf
实用程序在 Linux shell 中执行相同操作。甚至使用 bash 内置的 echo -en
。
\f
实际上是 \v
- 一个垂直选项卡,授予两者在控制台中看起来相同。
printf("123\f456\f789");
显示 /><bold>123456789</bold>在控制台上。
简而言之:
回车(\r 或 0xD):控制从同一行开始。
换行(\n 或 0xA):在下一行开始时取得控制权。
换页(\f 或 0xC):控制从下一页开始。
更多详细信息和更多控制字符可在以下页面中找到:Control character
0x0A 0x0D
,这些都是随意做出的选择。这些概念不是独立的,因此简洁的答案不适合这些情况。
看看Wikipedia:
基于 ASCII 或兼容字符集的系统单独使用 LF(换行,'\n',0x0A,十进制的 10)或 CR(回车,'\r',0x0D,十进制的 13),或 CR 后跟低频(CR+低频,0x0D 0x0A)。这些字符基于打印机命令:换行表示应将一行纸送出打印机,回车表示打印机回车应返回到当前行的开头。
\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
(又名写字板)可以很好地显示它们。
考虑一台 IBM 1403 冲击式打印机。 CR 将打印头移动到行首,但没有推进纸张。这允许“叠印”,将多行输出放在一行上。像下划线这样的事情是通过这种方式实现的,BOLD 打印也是如此。 LF 将纸推进了一行。如果没有 CR,下一行将按交错步打印,因为 LF 没有移动打印头。 FF 将论文推进到下一页。它通常还将打印头移动到新页面第一行的开头,但您可能需要 CR。可以肯定的是,大多数程序员在页面最后一行的末尾编码 CRFF 而不是 CRLF,因为 FF 创建的额外 CR 无关紧要。
作为补充,
1、回车:这是一个打印机术语,意思是把打印位置改为当前行的开头。在计算机世界中,它在大多数情况下意味着返回当前行的开头,但很少代表新行。
2、换行:这是一个打印机术语,意思是将纸张前进一行。所以回车和换行一起使用,在新行的开头开始打印。在计算机世界中,它通常与换行符具有相同的含义。
3、Form feed:这是一个打印机术语,我喜欢this thread中的解释。
如果您正在为 1980 年代风格的打印机编程,它会弹出纸张并开始新页面。您几乎可以肯定永远不需要它。 http://en.wikipedia.org/wiki/Form_feed
它几乎已经过时,您可以参考Escape sequence \f - form feed - what exactly is it?了解详细说明。
注意,我们可以在某些平台上使用 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,经典 Mac OS 至版本 9,MIT Lisp 机器和 OS-9 RS:QNX pre-POSIX 实现 0x9B:使用 ASCII 的 ATASCII 变体(十进制 155)CR 的 Atari 8 位机器+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 假脱机文本输出。
“\n”是换行符。这意味着结束当前行并为正在阅读它的任何人转到新行。
回车和换行也是对打字机的参考,在小车左侧(纸张所在的地方)的手柄上轻轻一推,纸张会围绕圆柱体旋转少量,推进打字机记录一行。如果您已经完成了一行的输入,并想继续输入下一行,您会更加努力,推进一行并将托架一直向右滑动,然后在托架随着每次击键移动时再次从左到右继续输入.不用说,自动换行是那个时代所有文字处理的默认设置。 P:D
这些是非打印字符,与“新行”的概念有关。 \n 是换行符。 \r 是回车。在不同的平台上,相对于有效的新行,它们具有不同的含义。在 Windows 中,换行符是 \r\n。在 Linux 中,\n.在 mac 中,\r。
实际上,您将它们放在任何字符串中,它都会对字符串的打印输出产生影响。
许多(50)年前,当我在皇家信号机当学徒时,电传打字机和打字机都有带有打印头的“马车”。当你按下 RETURN 时,马车会飞到左边。因此,回车 (CR)。您可以只退回 Carriage,但在机械打字机上,您将使用 Lever(很像电吉他上的颤音杆),它也可以进行 Line Feed。你的下一个问题是你为什么不想要换行符?呵呵,在那些日子里,要删除字符,我们会做一个 CR,然后在锤头和纸之间使用类似 Tip-ex 的纸,然后键入相同的键以用白色墨水覆盖。一些花哨的打字机有一个可以按的键。所以你去。
不定期副业成功案例分享
\x0c
吗?