作者:朱之光
編過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)作爲每一行結束的標記。