在計算機還沒有出現之前,有一種叫做電傳打字機(Teletype Model 33)的玩意,每秒鐘可以打10個字符。但是它有一個問題,就是打完一行換行的時候,要用去0.2秒,正好可以打兩個字符。要是在這0.2秒裏面,又有新的字符傳過來,那麼這個字符將丟失。
於是,研製人員想了個辦法解決這個問題,就是在每行後面加兩個表示結束的字符。一個叫做“回車”,告訴打字機把打印頭定位在左邊界;另一個叫做“換行”,告訴打字機把紙向下移一行。
這就是“換行”和“回車”的來歷,從它們的英語名字上也可以看出一二。
後來,計算機發明瞭,這兩個概念也就被般到了計算機上。那時,存儲器很貴,一些科學家認爲在每行結尾加兩個字符太浪費了,加一個就可以。於是,就出現了分歧。
Unix系統裏,每行結尾只有“<換行>”,即“\n”;Windows系統裏面,每行結尾是“<換行><回車>”,即“\n\r”;Mac系統裏,每行結尾是“<回車>”。一個直接後果是,Unix/Mac系統下的文件在Windows裏打開的話,所有文字會變成一行;而Windows裏的文件在Unix/Mac下打開的話,在每行的結尾可能會多出一個^M符號。
在ascii中,回車和換行是不同的字符。0x0A是回車,即光標移動到本行的最左面; 0x0D是換行,即光標移動到下一行。
在dos窗口中按回車鍵,其實是輸入了兩個字符0x0A,0x0D,對應到c中,就是\r(回車)\n(換行)
在C語言中
將 \n 存入文件
window: 0d 0a
unix: 0d
如果不存到文件中,不會變。
如果從文件中提取,
windows: 0d 0a -> \n
unix : 0d -> \n
[ 遊客 發表於 2008-03-27 18:55 ]
回車鍵,即鍵盤上的ENTER鍵,是一個比較有用的鍵,在文字編輯時,回車鍵的作用是換行,在輸入網址時回車鍵的作用是“轉到”,在執行DOS命令時,回車鍵的作用是執行……
在標準鍵盤上,回車鍵一共有2個,一個在主鍵盤區的右邊,Shift鍵的上面,一個在小鍵盤的右下角,加號鍵的下面。
回車鍵的歷史
關於“回車鍵”的來歷,還得從機械的英文打字機說起。在打字機上,有一個部件叫“字車”,每輸入一個單詞,“字車”就前進一格。當輸滿一行後,使用者就要推動“字車”到起始位置,這時打字機會有兩個動作:“字車”歸位、滾筒上卷一行(相當於“字車”下移一行),以便開始輸入下一行,這中推動“字車”的動作叫“回車”。後來,在電動的打字機上,人們增加了一個直接起“回車”作用的鍵。他被稱爲“回車鍵”。
在現今的電腦鍵盤上,“回車鍵”上曾使用過“CR”、“RETURN”的字樣,後來才統一確定爲“Enter”。
回車的ASCII代碼
16進制是“0x0d”
10進制是“13”
在某些語言中可以用‘\r’表示。
[ 遊客 發表於 2008-03-27 18:59 ]
如果用過機械打字機,就知道回車和換行的區別了。。。
換行就是把滾筒卷一格,不改變水平位置。
回車就是把水平位置復位,不捲動滾筒。
但是我們平時按得Enter到底是回車還是換行,不太清楚??
看到一種說法:windows下enter是 \n\r,unix下是\n,mac下是\r
在MS的系統中純文本格式按一個回車鍵是輸入了兩個字符,一個回車一個換行。在Linux系統中則只是一個回車。
//以上內容參考了http://topic.csdn.NET/t/20040617/23/3101951.html#和http://topic.csdn.Net/t/20021113/09/1171659.html的討論
還有在編程時文件操作
wb(二進制方式)或者wt(文本方式)也會有影響。我做了個實驗(實驗用.net2003)
在01.txt文件中輸入12然後enter,在ultraedit中看到的二進制是31 32 0d 0a
然後程序如下:
int mian()
{ FILE *fp1,*fp2,*fp3,*fp4,*fp5,*fp6;
char a[10];
char b[10];
fp1 = fopen("01.txt","r");
fp3 = fopen("02.txt","w");
fread(a,sizeof(unsigned char),8,fp1); //a裏是31 32 0a
fwrite(a,sizeof(unsigned char),8,fp3); //02.txt裏是31 32 0d 0a ,原因是輸入的情況下,換行回車轉換成換行,然後輸出時換行又會轉成換行回車
fclose(fp1);
fclose(fp3);
fp2 = fopen("01.txt","rb");
fp4 = fopen("03.txt","wb");
fread(b,sizeof(unsigned char),8,fp2); //b裏是31 32 0d 0a
fwrite(b,sizeof(unsigned char),8,fp4); //03.txt裏是31 32 0d 0a ,原因是二進制情況下回車和換行的(類似文本方式的那種轉換)是不存在的
fclose(fp2);
fclose(fp4);
return 0;
}
好像結論是這樣的:讀的方式下,在文本方式下,enter是0x0a;在二進制方式下,enter是0x0d,0x0a。
MSDN中查到這樣的話:Also, in text mode, carriage return–linefeed combinations are translated into single linefeeds on input, and linefeed characters are translated to carriage return–linefeed combinations on output. (輸入的情況下,換行回車轉換成換行,然後輸出時換行又會轉成換行回車)When a Unicode stream-I/O function operates in text mode (the default), the source or destination stream is assumed to be a sequence of multibyte characters. Therefore, the Unicode stream-input functions convert multibyte characters to wide characters. For the same reason, the Unicode stream-output functions convert wide characters to multibyte characters.
Open in binary (untranslated) mode; translations involving carriage-return and linefeed characters are suppressed. (二進制情況下回車和換行的轉換是不存在的).
再引用一篇:http://zhidao.baidu.com/question/27868102.html?fr=qrl3
軟硬回車 }
硬回車就是普通我們按回車產生的,它在換行的同時也起着段落分隔的作用。
軟回車是用 Shift + Enter 產生的,它換行,但是並不換段,即前後兩段文字在 Word 中屬於同一“段”。在應用格式時你會體會到這一點。
切換:
編輯——替換,點擊高級,在“查找內容”點入“特殊字符”中的手動換行符,再在“替換爲”中點入“特殊字符”中的段落標記,最後點擊全部替換。
鍵盤上只有一種回車鍵Enter,但卻有兩種不同性質的換行標記,不能不說是一個奇蹟。
我們常用的回車是硬回車,就是在word中敲擊Enter鍵產生的那個彎曲的小箭頭,佔兩個字節。這種回車可以有效地把段落標記出來分清楚。在兩個硬回車之間的文字自成一個段落,可以對它單獨設置段落標記而不用擔心其他段落受到影響。這也是我們習慣用硬回車的原因:排版方便。
但是硬回車也給我們帶來了麻煩。你如果是網頁設計者,或者是論壇遊俠,一定有這樣的經歷:當你打算換行時,換出的行卻實在不能恭維,行間距太大了!其實這和硬回車的原理是一樣的,只不過在word等文本編輯器中沒有顯示出它的“本來面目”。不過這樣的排版的確造成了不小的困難,這時我們就得請出硬回車的兄弟:軟回車。
軟回車只佔一個字節,在word中是一個向下的箭頭。如果你從很複雜的網頁中向word中複製過文字的話,對它一定不會陌生。但是想在word中直接輸入軟回車可不是那麼容易的。因爲軟回車不是真正的段落標記,它只是另起了一行,不是分段。所以它不是很利於文字排版,因爲它無法作爲單獨的一段被賦予特殊的格式。但是儘管如此,它在網頁設計中還是具有舉足輕重的地位的。
軟回車能使前後兩行的行間距大幅度縮小,因爲它不是段落標記,要和法定的段落標記——硬回車區別出來。硬回車的html代碼是<p>..</p>,段落的內容就夾在裏面,而軟回車的代碼很精悍:<br>。因此在網頁中想用到軟回車,只需切換到代碼頁面,鍵入軟回車的代碼即可。
下面我講一下不同編輯器文字互相拷貝時回車的轉化情況。
地球人都知道的,網頁的文字如果複製到word中,則硬回車變爲彎曲的箭頭,軟回車變爲向下的箭頭。結果造成習慣用word編輯文本的朋友很不習慣很不舒服的情況。
word中的文本複製到網頁中也是同樣的道理。可以說word和網頁比較兼容的,要不怎麼會有“保存爲web頁”這種選項呢?
記事本也是大家摸的比較多的編輯器。但是近年來隨着社會發展外加記事本的種種弊端,許多人都將其打入冷宮。對此我只能表示遺憾,因爲記事本本身的功能不豐富就是別的編輯器所取代不了的優點。大家再次將網頁的文字複製時,不妨粘貼到記事本里試試。哈哈,不管網頁設計者用的是什麼回車,現在都變成一種回車了!怎麼,你不信?那就看看吧:軟回車變成了普通的回車,硬回車變成了兩個普通的回車。你再從記事本里複製文字到word,記事本里的回車無一例外全都變成了硬回車!你再再從記事本里複製文字到網頁編輯器,所有回車就都變成軟回車了!!
[ 遊客 發表於 2008-03-27 19:00 ]
\n是換行,英文是linefeed,ASCII碼是0xA。
\r是回車,英文是carriage return ,ASCII碼是0xD。