在Windows系統(tǒng)中打開(kāi)txt文檔時(shí),最下面的“Windows(CRLF)”是什么提示呢?
和這個(gè)問(wèn)題有關(guān)概念的一個(gè)應(yīng)用場(chǎng)景是:當(dāng)你需要在不同操作系統(tǒng)平臺(tái)(例如Unix和Windows)之間切換時(shí),尤其是由一平臺(tái)生成的文檔在另一平臺(tái)查看時(shí),就必須搞清楚 回車”(Carriage Return, CR)和“換行”(Line Feed, LF)這兩個(gè)概念之間的區(qū)別。
電腦筆記本鍵盤上的回車鍵按鈕
Windows平臺(tái)中輸入“Enter”輸入幾個(gè)符號(hào)?他們具體是什么?
為回答這個(gè)問(wèn)題,從下面的實(shí)驗(yàn)開(kāi)始。
在Windows下創(chuàng)建一個(gè)txt文檔,輸入’123456’六個(gè)數(shù)字并“回車enter”,
保存后,查看屬性,占8個(gè)字節(jié),即輸入了八個(gè)字符,則剛才的“回車/enter”一定占了兩個(gè)字節(jié)!
這兩個(gè)字節(jié)是啥呢?
用UltraEdit軟件打開(kāi)該文件,查看這是個(gè)符號(hào)的十六進(jìn)制,可得:第一個(gè)符號(hào)的ASCII碼為31(十六進(jìn)制),對(duì)于的符號(hào)為為數(shù)字’1’;…;第七個(gè)符號(hào)的ASCII碼為 0D(十六進(jìn)制),對(duì)應(yīng)的符號(hào)為CR(回車);最后一個(gè)字符即第八個(gè)符號(hào)的ASCII碼為 0A(十六進(jìn)制),對(duì)應(yīng)的符號(hào)為L(zhǎng)F (換行)。
結(jié)論:Windows下處理回車的效果是:回車換行,即兩個(gè)字符(rn ).
Windows平臺(tái)下,C語(yǔ)言中輸出‘n’到txt文檔時(shí),輸出的是一個(gè)字符還是兩個(gè)呢?
答案是:兩個(gè)字符rn.
在Windows系統(tǒng)下運(yùn)行下面兩個(gè)程序:
程序一:
#include
void main( )
{
FILE *fp;
if((fp=fopen(“test.txt”,”w”)) = = NULL) {
printf(“Open the test.txt file errorn”);
}
for(int i=0;i<10;i++){
fprintf(fp,”testn”);
}
fclose(fp);
}
程序二:
#include
void main( )
{
FILE *fp;
if((fp=fopen(“test.bin”,”wb”)) = = NULL) {
printf(“Open the test.bin file errorn”);
}
for(int i=0;i<10;i++){
fprintf(fp,”testn”);
}
fclose(fp);
}
程序一輸出文件test.txt的大小是60字節(jié),程序二輸出文件大小是50字節(jié),用記事本打開(kāi)程序一的輸出沒(méi)有什么問(wèn)題,每行一個(gè)test. 打開(kāi)程序二的輸出文件test.bin時(shí)發(fā)現(xiàn)所有的test連成一行,test之間是一個(gè)黑色方框符號(hào)分隔。用UltraEdit-32以16進(jìn)制編輯模式打開(kāi)test.bin可以查看到黑色方框符號(hào)就是0A也就是n,打開(kāi)test.txt則會(huì)發(fā)現(xiàn)換行是rn,這就是兩個(gè)文件大小相差10字節(jié)的原因。Unix類系統(tǒng)用戶打開(kāi)windows中的文件就會(huì)遇到這種苦惱。
為什么會(huì)有這種區(qū)別呢?
由于Unix系統(tǒng)是基于C語(yǔ)言編寫(xiě)的,C語(yǔ)言中使用n表示換行,而在實(shí)際的文件中換行符號(hào)需要同操作系統(tǒng)一致,所以當(dāng)我們?cè)贑中使用fopen打開(kāi)一個(gè)文本文件時(shí)流實(shí)現(xiàn)了實(shí)際換行符與C中n之間的轉(zhuǎn)換。在Windows中當(dāng)用fopen打開(kāi)文本文件,然后從中讀到rn時(shí)流會(huì)轉(zhuǎn)換為n,而當(dāng)我們往文件中寫(xiě)入n時(shí)流會(huì)轉(zhuǎn)換為rn。程序一是打開(kāi)文本文件,程序二打開(kāi)的是二進(jìn)制文件,因?yàn)榱髦粚?duì)文本文件進(jìn)行換行表示的轉(zhuǎn)換,以二進(jìn)制模式打開(kāi)流不會(huì)做任何處理。所以當(dāng)你以二進(jìn)制模式打開(kāi)一個(gè)文本文件時(shí)將產(chǎn)生錯(cuò)亂,你必須親自將rn解釋為n,同樣的問(wèn)題也會(huì)出現(xiàn)在以文本模式打開(kāi)二進(jìn)制文件的情況.這也解釋了為什么Unix類系統(tǒng)中的文件不區(qū)分文本文件和二進(jìn)制文件的原因。
軟回車 硬回車的區(qū)別
硬回車:enter
作用:換行的同時(shí)分隔段落;
在word中敲擊Enter鍵產(chǎn)生的那個(gè)彎曲的小箭頭,占兩個(gè)字節(jié)。如下圖所示:
軟回車: Shift + Enter
作用:換行,但是并不換段,即前后兩段文字在 Word 中屬于同一“段”。在應(yīng)用格式時(shí)能看出明顯區(qū)別,體會(huì)到這一點(diǎn)。
軟回車只占一個(gè)字節(jié),在word中是一個(gè)向下的箭頭。符如下圖所示:
當(dāng)我們需要將從網(wǎng)頁(yè)上找到資料復(fù)制粘貼到word文檔中時(shí),經(jīng)??吹杰浕剀嚪?hào),這是因?yàn)檐浕剀囋诰W(wǎng)頁(yè)設(shè)計(jì)中具有舉足輕重的地位的:
軟回車能使前后兩行的行間距大幅度縮小,因?yàn)樗皇嵌温錁?biāo)記,要和法定的段落標(biāo)記——硬回車區(qū)別出來(lái)。硬回車的html代碼是
..
,段落的內(nèi)容就夾在里面,而軟回車的代碼很精悍:。因此在網(wǎng)頁(yè)中想用到軟回車,只需切換到代碼頁(yè)面,鍵入軟回車的代碼即可。
小結(jié):
最后,本篇筆記開(kāi)始的那個(gè)問(wèn)題就很明確了:“Windows(CRLF)”是編輯器對(duì)Windows系統(tǒng)下,“回車”操作符等效為“rn”的一個(gè)提示
本文由網(wǎng)上采集發(fā)布,不代表我們立場(chǎng),轉(zhuǎn)載聯(lián)系作者并注明出處:http://beyondyourquote.com/shbk/39088.html