1. 程式人生 > >回車和換行的區別

回車和換行的區別

“回車”和“換行”這兩個概念的來歷和區別:

在計算機還沒有出現之前,有一種叫做電傳打字機(Teletype Model 33)的機械打字機,每秒鐘可以打10個字元。但是它有一個問題,就是打完一行換行的時候,要用去0.2秒,正好可以打兩個字元。要是在這0.2秒裡面,又有新的字元傳過來,那麼這個字元將丟失。

於是,研製人員想了個辦法解決這個問題,就是在每行後面加兩個表示結束的字元。一個叫做“回車”(carriage return,’\r’),告訴打字機把列印頭定位在左邊界,不捲動滾筒;另一個叫做“換行”(line feed,’\n’),告訴打字機把滾筒卷一格,不改變水平位置。

這就是“換行”和“回車”的由來。

回車 \r 本義是游標重新回到本行開頭,r的英文return,控制字元可以寫成CR,即Carriage Return

換行 \n 本義是游標往下一行(不一定到下一行行首),n的英文newline,控制字元可以寫成LF,即Line Feed

  • Unix 系統裡,每行結尾只有“<換行>”,即“\n”;
  • Windows系統裡面,每行結尾是“<回車><換行>”,即“\r\n”;
  • Mac系統裡,每行結尾是“<回車>”,即“\r”。

    一個直接後果是,Unix/Mac系統下的檔案在Windows裡開啟的話,所有文字會變成一行;而Windows裡的檔案在Unix/Mac下開啟的話,在每行的結尾可能會多出一個^M符號。

    在Windows系統中回車鍵被當做\r\n 的組合來使用,當我們從鍵盤輸入回車鍵時,Windows系統會把回車鍵當做\r\n 來處理,Unix系統只會當做\n 來處理,不管在什麼系統中,都可以用\n來作為一行輸入結束的標記,只是在程式設計時我們需要注意,在Windows系統中我們會讀到\r 這個字元,我們必須把\r和正常輸入的字元區別開來。