C語言基礎教程 printf( )函式中的回車‘\r’與回車換行'\n'
今天完成了初級階段的學習,其實以前在開發微控制器的時候用過C語言,但是沒有系統的學過,所以再次學習感覺能夠查缺補漏。
C語言中的printf( )函式是一個很重要的函式。printf( )中的字元包含了三種:
(1)以%開頭的格式控制字元
(2)以 \ 開頭的轉義字元
(3)普通字元
在printf函式中一旦出現格式控制字元%和轉義字元 \ ,他們會立即尋找後面緊跟著的字元進行組合。這裡我進行了簡單總結:
#格式控制符#
%i---輸出一個整型數;
%d---輸出一個整型數;
%f---輸出一個浮點數;
%e---輸出一個浮點數,科學計數法;
%g---輸出一個浮點數,當指數小於-4或者大於5,則運用科學計數法,否則正常顯示浮點數;%c---輸出一個字元; %o---輸出一個八進位制的整型數,前面不帶0; %#o---輸出一個八進位制的整型數,前面帶0; %x---輸出一個十六進位制的整型數,前面不帶0x; %#x---輸出一個十六進位制的整型數,前面帶0x, 如果x大寫,則顯示的時候也是大寫。 %u---不帶符號的十進位制整數。 %%---輸出一個%。
#轉義字元#
\n 回車換行
\t 橫向跳格(相當於tab)
\v 豎向跳格(印表機專用)
\r 回車
\f 換頁(印表機專用)
\b 退格(相當於backspace)
\\ 反斜槓字元\
\' 單引號 '
\" 雙引號“
\ddd 以八進位制形式代表的ASCII字元
\xhh 以十六進位制形式代表的ASCII字元
\0 空值
下面是本次感悟的重點:\n 和 \r 這兩個轉義字元的具體含義:
(1)二者都有“回車”的意思,那麼“回車”是什麼意思呢?如果能搞清楚回車的含義,就可以很清楚知道這兩個轉義字元的區別了。
回車這個詞,其實是來源於針式打字機(一些諜戰片能看到,例如《北平無戰事》第44集)如下圖:
最後一張圖中那個裝鑄造字型的機構就叫字車,因為它還要左右移動,象固定在軌道上的車一樣,故稱為字車。
◆打字的時候,字車由左向右移動,打完一行,要將字車回到最左邊,這個過程可以理解為“回車”,所以回車的意思就是將字車回到首列。而如果要繼續打字,就要將字車移到下一行,繼續從左到右,一個一個打字。
現代計算機語言中延續了“回車”的概念,而以前打字機的字車的概念等同於現在的螢幕上游標,所以科學家在設計C語言時,採用了“回車”的這種概念:
‘\r’就是將游標移到本行的首列。
回車換行的‘\n’就是將游標移到本行首列以後換行(移到下一行)。