printf格式化輸出符號詳細說明[轉]
阿新 • • 發佈:2019-02-04
原文:printf 格式化輸出符號詳細說明
* %a
:浮點數、十六進位制數字和p-記數法(C99)
* %A
:浮點數、十六進位制數字和p-記法(C99)
* %c
:一個字元char
* %C
:一個ISO寬字元
* %d
:有符號十進位制整數int
* %ld,%Ld
:長整型資料long
* %hd
:短整型資料
* %e
:浮點數、e-記數法
* %E
:浮點數、E-記數法
* %f
:單精度浮點數(預設float
),十進位制記數法
* %.nf
:這裡n
表示精確到小數位後n
位,十進位制記數法
* %g
:根據數值不同自動選擇%f
或%e
* %G
:根據數值不同自動選擇%f
或%e
* %i
%d
相同) *
%o
:無符號八進位制整數 *
%p
:指標 *
%s
:對應字串char*
(%s == %hs == %hS
輸出窄字串) *
%S
:對應寬字串WCAHR*
(%ws == %S
輸出寬字串) *
%u
:無符號十進位制整數unsigned int
*
%x
:無符號十六進位制整數(形式為2f
) *
%#x
:無符號十六進位制整數(形式為0x2f
) *
%X
:無符號十六進位制整數(形式為2F
) *
%#X
:無符號十六進位制整數(形式為0x2F
) *
%%
:列印一個百分號 *
%lld
:用於INT64
或者long long
*
%llu
:用於UINT64
unsigned long long
*
%llx
:用於64位16進位制資料
說明:
%
:表示格式說明的起始符號,不可缺少-
:有-
表示左對齊輸出,如省略表示右對齊輸出0
:有0
表示指定空位填0
,如省略表示指定空位不填m.n
:m
指域寬,即對應的輸出項在輸出裝置上所佔的字元數;n
指精度,用於說明輸出的實型數的小數位數,未指定n
時,隱含的精度為n=6
位l,h
:l
對整型指long
型,對實型指double
型;h
用於將整型的格式字元修正為short
型
格式字元
格式字元用以指定輸出項的資料型別和輸出格式。
d
格式:用來輸出十進位制整數。有以下幾種用法:
%d
:按整型資料的實際長度輸出。%md
:m
為指定的輸出欄位的寬度。如果資料的位數小於m
,則左端補以空格,若大於m
,則按實際位數輸出。
o
格式:以無符號八進位制形式輸出整數。對長整型可以用%lo
格式輸出。同樣也可以指定欄位寬度用%mo
格式輸出。x
格式:以無符號十六進位制形式輸出整數。對長整型可以用%lx
格式輸出。同樣也可以指定欄位寬度用%mx
格式輸出。u
格式:以無符號十進位制形式輸出整數。對長整型可以用%lu
格式輸出。同樣也可以指定欄位寬度用%mu
格式輸出。c
格式:輸出一個字元。s
格式:用來輸出一個串。有以下幾種用法:
%s
:例如:printf("%s", "CHINA")
輸出字串CHINA
%ms
:輸出的字串佔m
列,如果字串本身長度大於m
,則突破獲m
的限制,將字串全部輸出。若串長小於m
,則左補空格。%-ms
:如果串長小於m
,則在m
列範圍內,字串向左靠,右補空格。%m.ns
:輸出佔m
列,但只取字串中左端n
個字元。這n
個字元輸出在m
列的右側,左補空格。%-m.ns
:其中m,n
含義同上,n
個字元輸出在m
列範圍的左側,右補空格。如果n>m
,則自動取n
值,即保證n
個字元正常輸出。
f
格式:用來輸出實數(包括單、雙精度),以小數形式輸出。有以下幾種用法:
%f
:不指定寬度,整數部分全部輸出並輸出6位小數。%m.nf
:輸出共佔m
列,其中有n
位小數,若數值寬度小於m
左端補空格。%-m.nf
:輸出共佔m
列,其中有n
位小數,若數值寬度小於m
右端補空格。
e
格式:以指數形式輸出實數。可用以下形式:
%e
:數字部分(又稱尾數)輸出6位小數,指數部分佔5位或4位。%m.ne,%-m.ne
:m,n
和-
字元含義與前相同。此處n
指資料的數字部分的小數位數,m
表示整個輸出資料所佔的寬度。
g
格式:自動選f
格式或e
格式中較短的一種輸出,且不輸出無意義的零。
可變寬度引數
對於m.n
的格式還可以用如下方法表示:
char ch[20];
printf("%*.*s\n",m,n,ch);
前邊的*
定義的是總的寬度,後邊的定義的是輸出的個數。分別對應外面的引數m,n
。這種方法的好處是可以在語句之外對引數m,n
賦值,從而控制輸出格式。