编过C程序的人都知道\n是换行符。在字符串中插入\n,就可以多行打印在屏幕上。如:printf(“hello\nWorld\n”);
可是为什么要叫做“回车换行”?
起源
首先要从打字机说起,打字机当前行打满后,要到下一行起始处开始打字需要两个步骤。
第一步,将纸卷从最右边推到最左边,这个叫回车(Carriage Return,缩写为CR);
第二步,将纸卷下卷一行,这个叫换行(Linefeed,缩写为LF)。
为什么要分成回车换行两步?为什么打字机不设计成一步完成?
因为打字机不像计算机,打错后删除字符就可以。一旦打错就是白纸黑字改不了。只能将纸卷推回到打错的地方打上一个错误标记,再在后面接着打正确的。而在有些情况下,为了打出一些特殊的格式,打字员还会只换行不回车。比如:打一斜列的’*’。
回车换行符在ASCII码表中对应0x0A和0x0D两个数字。对应C语言转义字符为’\r’,’\n’。在编写计算机程序中很多人会用一个换行(LF)代替整个回车换行操作。也就是’\n’。这个要求计算机的显示系统能够正确处理并显示,显示的结果要根据不同的操作系统/软件环境来决定。
打印到控制台最好把'\r\n'写全。如果是要保存到文件,请看下面的“不同平台下的文本文件”章节。
回车还有用吗?
做一个试验:printf(“1111\r222”); => 输出结果为:2221,因为其中有一个回车符,将光标移动到了屏幕最左端。使得222覆盖了前面的111。最后一个1因没有被覆盖而被保留下来。
不同平台下的文本文件
Unix中的文本文件以一个换行符(\n)作为每一行结束的标记;
MS-DOS/Windows中的文本文件以一个回车加换行(\r\n)作为每一行结束的标记;
Macintosh中的文本文件以一个回车符(\r)作为每一行结束的标记。
可是为什么要叫做“回车换行”?
起源
首先要从打字机说起,打字机当前行打满后,要到下一行起始处开始打字需要两个步骤。
第一步,将纸卷从最右边推到最左边,这个叫回车(Carriage Return,缩写为CR);
第二步,将纸卷下卷一行,这个叫换行(Linefeed,缩写为LF)。
为什么要分成回车换行两步?为什么打字机不设计成一步完成?
因为打字机不像计算机,打错后删除字符就可以。一旦打错就是白纸黑字改不了。只能将纸卷推回到打错的地方打上一个错误标记,再在后面接着打正确的。而在有些情况下,为了打出一些特殊的格式,打字员还会只换行不回车。比如:打一斜列的’*’。
回车换行符在ASCII码表中对应0x0A和0x0D两个数字。对应C语言转义字符为’\r’,’\n’。在编写计算机程序中很多人会用一个换行(LF)代替整个回车换行操作。也就是’\n’。这个要求计算机的显示系统能够正确处理并显示,显示的结果要根据不同的操作系统/软件环境来决定。
打印到控制台最好把'\r\n'写全。如果是要保存到文件,请看下面的“不同平台下的文本文件”章节。
回车还有用吗?
做一个试验:printf(“1111\r222”); => 输出结果为:2221,因为其中有一个回车符,将光标移动到了屏幕最左端。使得222覆盖了前面的111。最后一个1因没有被覆盖而被保留下来。
不同平台下的文本文件
Unix中的文本文件以一个换行符(\n)作为每一行结束的标记;
MS-DOS/Windows中的文本文件以一个回车加换行(\r\n)作为每一行结束的标记;
Macintosh中的文本文件以一个回车符(\r)作为每一行结束的标记。