1. 程式人生 > >\n \r 換行回車的區別 2018-10-30

\n \r 換行回車的區別 2018-10-30

參考:
http://blog.chinaunix.net/uid-12038475-id-3766827.html
https://www.cnblogs.com/hq233/p/6389234.html

1.定義

回車:\r , 即 Carriage Return,控制字元可以寫成 CR, 作用是將游標重新回到本行開頭 ^M 是ascii中的'\r', 回車符,是16進位制的0x0D,八進位制的015,十進位制的13;^M在vi編輯器中可以使用Ctrl+ v + m三個鍵打出來
換行:\n , 即 New line,控制字元可以寫成LF,即 line feed,即游標移到下一行(這個操作是直接往下一行,不回到行首);其ascii程式碼是10,十六進位制為0x0A

2. 三大系統關於 換行 這一動作的區別:

  • Windows使用兩個字元\r\n( 0x0D 和 0x0A )表示,即回到行首和下一行兩個動作來實現換行
  • Unix系統裡,只使用一個字元\n來實現換行,即一個字元實現上面兩個動作
  • Mac系統中,只使用一個字元\r來實現換行,即一個字元實現上面2個動作。
    這樣造成的後果是,Mac/Unix系統下面的檔案在Windows下面開啟時,由於Mac/Unix系統只有一個字元來表示換行,因此,會導致所有檔案都出現在一行;而windows裡的檔案在Unix下開啟,在每行的結尾會多出一個 ^M 字元

3. 歷史:

在計算機還沒有出現之 前,有一種叫做電傳打字機(Teletype Model 33,Linux/Unix下的tty概念也來自於此)的玩意,每秒鐘可以打10個字元。但是它有一個問題,就是打完一行換行的時候,要用去0.2秒,正 好可以打兩個字元。要是在這0.2秒裡面,又有新的字元傳過來,那麼這個字元將丟失。
於是,研製人員想了個辦法解決這個問題,就是在每行後面加兩個表示結束的字元。一個叫做“回車(return)”,告訴打字機把列印頭定位在左邊界;另一個叫做“換行(newline)”,告訴打字機把紙向下移一行。這就是“換行”和“回車”的來歷