C 教材:printf( ) 與跳脫字元

fahr-40.c 中,我們以

printf("The answer is %d\n", cels);
來輸出答案。printf() 是一個外部函式, 它名字裡面的 f 是 format (格式) 的意思。 它的使用模式是
printf(STRING, VARIABLE_1, VARIABLE_2, ...);
其中 STRING 是一個字串 (用一對 " " 括起來的字元), VARIABLE_1 VARIABLE_2 依序是若干個變數名。 可以沒有變數名,例如 hello.c 的情況。

printf() 會把字串裡面的所有字元---除了用 \% 開頭的符號以外---照原樣輸出到標準輸出裝置 (standard output), 以後簡記做 stdout。目前,讀者只要知道, 所謂 stdout 通常是指終端機螢幕,但是容許使用者在 UNIX 介面中使用 pipe 或 redirection 重新導向這些字元。

\% 開頭的符號也會輸出到 stdout。 只是它們另有意義。 先說 \,它是跳脫字元 (escape character), 用來輸出一些不可見字元,或是特殊字元。先說四個:

\n LF 字元 (linefeed),亦即 ASCII 10 號
\t HT 字元 (tab),亦即 ASCII 9 號
\" 在字串中輸出 " 字元
\\ 在字串中輸出 \ 字元
\ 之後必須緊跟著一個字元,不加空白。 而再後面也不需空白,可以接著寫其他字元。例如
printf("here\tis a \"TAB\"\nHere is next line\n");
會輸出
here    is a "TAB"
Here is next line

%格式字元 (format character)。 在 % 會接若干個字元,表示解讀變數的方法和輸出的格式。 在字串中,每出現一次 % 就要在後面出現一次變數名。 而且,第一個 % 對應第一個變數名, 第二個 % 對應第二個變數名,依此類推。 先介紹兩種格式:

%% 輸出一個 % 符號
%d 以整數型態解讀變數,以恰好的位數輸出
%7d 同上,但以至少 7 位數輸出, 若變數的值不到 7 位,靠右邊排齊,左邊留空白
%-7d 同上, 但若變數的值不到 7 位,靠左邊排齊,右邊留空白
上面說的 7 可以改成任何正的常數整數。例如
int n;
n = 1234;
printf("|%d\n|%1d\n|%3d\n|%5d\n|%9d\n|%13d\n", n,n,n,n,n,n);
會輸出
|1234
|1234
|1234
| 1234
|     1234
|         1234

最後,我們提醒讀者注意,在這一節裡面,我們寫 printf(), 而不是 printf。 這是書寫 C 語言的習慣。 當我們寫一個函式名的時候,在它的後面加上 () 以提示讀者, 這是個函式,不是變數。 同理,以後我們也會寫 main()

習題

  1. 如何將 a.out 的輸出儲存到一個名叫 f-40c 的檔案內?
  2. 如何將 a.out 的輸出導向成為 wc 的輸入?

[BCC16-C]
單維彰 (2000/03/24) ---
[Prev] [Next] [Up]