printf

printf

printf()函式是格式化輸出函式, 一般用於向標準輸出設備按規定格式輸出信息。 printf()函式的調用格式為: printf("", )。 格式輸出,它是c語言中產生格式化輸出的函式(在 stdio.h 中定義)。用於向終端(顯示器、控制台等)輸出字元。格式控制由要輸出的文字和數據格式說明組成。要輸出的文字除了可以使用字母、數字、空格和一些數字元號以外,還可以使用一些轉義字元表示特殊的含義。

基本信息

原型

extern int printf(const char *format,...);

功能

printf printf

在c語言中產生格式化輸出的函式(定義在 stdio.h 中),其向未重定向終端(顯示器、控制台等)輸出字元。

用法

format

Format 參數是包含三種對象類型的一個字元串:

* 無格式字元複製到輸出流;

* 轉換規範,每個規範導致在值參數列表中檢索 1 個或更多個項;

* 轉義序列。

通常意義上format的格式如下:

%[flags][width][.prec][F|N|h|l]type

規定輸出數據的格式,具體如下:

type

type的字元用於規定輸出數據的類型,含義如下:

字元對應數據類型含義
d / iint接受整數值並將它表示為有符號的十進制整數,i是老式寫法
ounsigned int無符號8進制整數(不輸出前綴0)
u unsigned int無符號10進制整數
x / X unsigned int無符號16進制整數,x對應的是abcdef,X對應的是ABCDEF(不輸出前綴0x)
f(lf) double單精度浮點數和雙精度浮點數用f(lf 在C99開始加入標準,意思和 f 相同)
e / E double科學計數法表示的數,此處"e"的大小寫代表在輸出時用的“e”的大小寫
g / G double有效位數,如:%.8g表示單精度浮點數保留8位有效數字。
c char字元型。可以把輸入的數字按照ASCII碼相應轉換為對應的字元
s / S char * / wchar_t *字元串。輸出字元串中的字元直至字元串中的空字元(字元串以'\0‘結尾,這個'\0'即空字元)
p void *以16進制形式輸出指針
nint *到此字元之前為止,一共輸出的字元個數,不輸出文本
% 無輸入 不進行轉換,輸出字元‘%’(百分號)本身
m列印errno值對應的出錯內容,(例: printf("%m\n"); )

註:%g、%G在小數點位數四位或指數大於等於精度時用%e、%E,否則用%f。

flags

flags 規定輸出樣式,取值和含義如下:

字元 字元名稱說明
-減號左對齊,右邊填充空格(默認右對齊)
+ 加號在數字前增加符號 + 或 -
0 數字零將輸出的前面補上0,直到占滿指定列寬為止(不可以搭配使用“-”)
空格輸出值為正時加上空格,為負時加上負號
# 井號 type是o、x、X時,增加前綴0、0x、0X type是e、E、f、g、G時,一定使用小數點 type是g、G時,尾部的0保留

width

用於控制顯示數值的寬度,取值和含義如下:

n(n=1,2,3,4,5,6...): 寬度至少為n位,不夠以空格填充。

* 格式列表中,下一個參數還是width

width是一個可選的指定最小值欄位寬度的十進制數字字元串。如果轉換值字元少於欄位寬度,該欄位將從左到右按指定的欄位寬度填充。如果指定了左邊調整選項,欄位將在右邊填充。如果轉換結果寬於欄位寬度,將擴展該欄位以包含轉換後的結果。不會發生截斷。然而,小的精度可能導致在右邊發生截斷。

prec

用於控制小數點後面的位數,取值和含義如下:

無按預設精度顯示0

當type=d,i,o,u,x時,沒有影響;

type=e,E,f時,不顯示小數點

n(n=1,2,3...)

當type=e,E,f時表示的最大小數位數;

type=其他,表示顯示的最大寬度

prec是指可選的精度。精度是一個 .(點)後跟十進制數字字元串。如果沒有給出精度,按 0(零)對待。精度指定:

* d、o、i、 u、x 或 X 轉換的最少數字顯示位數。

* e 和 f 轉換的基數字元後的最少數字顯示位數。

* g 轉換的最大有效數字位數。

* s 轉換中字元串的最大列印位元組數目。

F|N|h|l

表示指針是否是遠指針或整數是否是長整數

F 遠指針

N 近指針

h 短整數(short int)

l 長整數(long int) (此處如果與d搭配為%lld則為long long int(C99),與f搭配為%llf則為long double(C99))

[Argument]

包含需要輸出的數據,可以是常量(字元常量、數字常量、字元串常量),變數,以及運算式。此處的數據應當與前面的format中的格式控制符一一對應(如果不對應會產生錯誤)。

例如:

轉義序列

這些轉義序列在字元串中會被自動轉換為相應操作命令

表示

符號 意義 符號 意義
\a 鈴聲(提醒) \b Backspace
\f 換頁 \n 換行
\r 回車 \t 水平制表符
\v 垂直制表符 \’ 單引號
\” 雙引號 \\ 反斜槓
\? 文本問號 \ ooo (例如\024) ASCII字元(OCX)
\xhh (例如:\x20) ASCII字元(HEX) \xhhhh 寬字元(2位元組HEX)

例如,WCHAR f = L'\x4e00' 或 WCHAR b[] = L"The Chinese character for one is \x4e00"。

函式返回值

printf 函式的一般形式為:

以上形式,我們在Visual C++里輸入“printf”(將會看到)。

說明printf函式類型為整型,其返回值是整型值。

其值為printf實際控制輸出的 字元 數。

printf函式實際上是將所有參數按字元輸出,根據該函式的參數1(const char *format),我們不難理解。

例如:

以上程式將會輸出:

printf printf

程式舉例例一:

例二

printf 也可以這樣用(具體請參照 C 語法,字元串相關內容。這不是 printf 特有功能):

輸出:

123

注意:

的輸出結果與

是相同的。

因此輸出多行時,也並不需要每行調用一次printf。

例三

妙用printf判斷閏年程式

(此例中用到了?:的運算符)

例四

(此例中使用了scanf函式和strcpy函式)

其中前邊*定義的是總的寬度,後邊*是指定輸出字元個數。分別對應外邊參數m和n。

輸入:

10 3

輸出:

Hap環境變數

下列環境變數影響 printf 命令的執行:

LANG 在 LC_ALL 和相應的環境變數(以 LC_ 開頭)沒有指定語言環境時,確定語言環境編目使用的語言環境。

LC_ALL 確定用於覆蓋由 LANG 或其它任何 LC_環境變數設定的任何語言環境編目值的語言環境。

LC_CTYPE 確定把文本位元組數據順序解釋為字元的語言環境;例如,單一位元組對應多位元組字元的參數。

LC_MESSAGES 確定寫訊息使用的語言。

LC_NUMERIC 確定數字格式編排的語言環境。此環境變數影響使用 e、E、f、g 和 G 轉換字元編寫的數字的格式。

相關詞條

相關搜尋

熱門詞條

聯絡我們