回車與換行的區別(轉)


add by zhj: 不同操作系統下換行符不同,如下:

\n:  UNIX

\n\r: window

\r:  MAC OS

我們經常遇到的一個問題就是,Unix/Mac系統下的文件在Windows里打開的話,所有文字會變成一行;而Windows里的文件在Unix/Mac下打開的話,在每行的結尾可能會多出一個^M符號。

 

原文:https://www.cnblogs.com/dawn-l/p/5180373.html

  在輸入文本時,回車鍵一敲,就開始了新的一行,這個習慣性用法難免誤導 C/C++ 的初學者們對 回車符(CR, Carriage Return)'\r' 和 換行符(LF, Linefeed)'\n' 的理解,這里這個問題我們暫且放下,后文再談。先讓我們來看看關於“回車”的有趣歷史來源。

  關於“回車鍵”的來歷,要追朔到機械英文打字機的時代。在這種打字機上有個叫“字車”的部件,大概就是下面那個部分,會左右不停地跑的那東西。

 

  當輸滿一行后,使用者就要把“字車”推到起始位置,這時打字機就會有兩個動作,一是“字車”歸位,二是滾筒上卷一行(相當於“字車”下移一行),這樣就可以開始輸入下一行了,這里推動“字車”的動作就稱為“回車”。

  上述打字機的“字符”歸位的動作就相當於我們的 回車 '\r',只回到行首而仍在當前行,而滾筒上卷的動作就相當於 換行 '\n',移動到下一行。回車符 '\r' 對應 ASCII 碼的16進制是 0x0d,10進制是 13,換行符 '\n' 對應16進制是 0x0a, 10進制是 10。

  而不同的系統對回車的處理是不同的:在我們常用的 Windows 系統中用 "\r\n"兩個字符來表示,如圖,在第一行與第二行之間有兩個字符位,分別是 0D 0A,即 ASCII 碼對應的 '\r'和'\n'。這樣的表示方法就和打字機的行為很相似了。

 

  那么,同樣的方法,在 Linux 上會是什么情況呢?請繼續看。

 

  在 Linux 上通過 vim 我們看到,在 a, ab, abc 之間只有一個字符位了,對應的是 0a,即 ASCII 碼中的 '\n',這就說明在 Linux 上只用了一個換行字符來表示。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM