計算機中的回車換行(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)作爲每一行結束的標記。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章