儘管\r與\n已經連起來用了很久了,但是還沒仔細的做過任何實驗體會下,正好今晚有空,坐等歐冠決賽開打.....
首先測試下'\r',打印如下:
printf("123\rabc");
printf("1234\rabc");
printf("123\rabcd");
輸出結果分別爲:
abc
abc4
abcd
由此可見,第一句裏面,在輸出123之後,碰到\r時,會將光標移到行首也就是123的前面,然後在這裏輸出abc,abc覆蓋了123;
第二句代碼,可以驗證,123確實被abc覆蓋掉,而4沒有被覆蓋。
接下來,測試'\n'
printf("123\nabc");
printf("\n1234abc");
printf("123\nabcd\n456");
結果爲:
第一句:
123
456
第二句:
空
123456
第三句:
123
abcd
456
發現在新行後也都是從最左邊開始的,與\r\n沒有區別,再來測試下\r\n
printf("123\r\nabc");
printf("\r\n1234abc");
printf("123\r\nabcd\r\n456");
結果與單獨用\n是一樣的,測試\n\r的結果與上面也是一樣的。
下面是從別處引用的一些話:
1.我們在平時使用電腦時,已經習慣了回車和換行一次搞定,敲一個回車鍵,即是回車,又是換行,但在早期的打字機上,要另起一行打字需要兩個步驟,首先要發送命令"\r”將打字頭復位,即回車,然後再發送命令"\n”讓打字機走紙移到下一行,所以這個歷史遺留問題導致瞭如今我們在DOS-Windows的系統裏需要區分"\r\n”和“\n”,但在Unix中只有"\n”
2.有時候在文本文件中出現■這樣的符號,是因爲沒有"\r\n"連用,導致不能正確回車換行。在C中讀取文本時,"\r\n”已自動轉成"\n”。
3.在windows下,\r\n的表現和只有留下一個字符是一樣的,因爲被特殊處理過了,以使打印機打出來的和畫面上的表現一致。在Unix下,通常只有\r,如果是\r\n,用vi打開會看到行末有【^M】符號。