计算机中的回车换行(CRLF)详解

作者:朱之光

编过C程序的人都知道\n是换行符。在字符串中插入\n,就可以多行打印在屏幕上。如:printf(“hello\nWorld\n”);

         可是为什么要叫做“回车换行”?

起源

        首先要从打字机说起,打字机当前行打满后,要到下一行起始处开始打字需要两个步骤。
        第一步,将纸卷从最右边推到最左边,这个叫回车(Carriage Return,缩写为CR);
        第二步,将纸卷下卷一行,这个叫换行(Linefeed,缩写为LF)。

为什么要分成回车换行两步?为什么打字机不设计成一步完成?

        因为打字机不像计算机,打错后删除字符就可以。一旦打错就是白纸黑字改不了。只能将纸卷推回到打错的地方打上一个错误标记,再在后面接着打正确的。而在有些情况下,为了打出一些特殊的格式,打字员还会只换行不回车。比如:打一斜列的’*’

        回车换行符在ASCII码表中对应0x0A0x0D两个数字。对应C语言转义字符为’\r’’\n’。在编写计算机程序中很多人会用一个换行(LF)代替整个回车换行操作。也就是’\n’。这个要求计算机的显示系统能够正确处理并显示,显示的结果要根据不同的操作系统/软件环境来决定。
        打印到控制台最好把'\r\n'写全。如果是要保存到文件,请看下面的“不同平台下的文本文件”章节。

回车还有用吗?

        做一个试验:printf(“1111\r222”); =>输出结果为:2221,因为其中有一个回车符,将光标移动到了屏幕最左端。使得222覆盖了前面的111。最后一个1因没有被覆盖而被保留下来。

不同平台下的文本文件

        Unix中的文本文件以一个换行符(\n)作为每一行结束的标记;

        MS-DOS/Windows中的文本文件以一个回车加换行(\r\n)作为每一行结束的标记;

        Macintosh中的文本文件以一个回车符(\r)作为每一行结束的标记。


你可能感兴趣的:(C,C++)