格式說明符是在格式化的輸入和輸出函數(shù)中使用的字符串。格式字符串確定輸入和輸出的格式。格式字符串始終以“%”字符開頭。
轉(zhuǎn)換說明 | 輸 出 |
%a | 浮點數(shù)、十六進制數(shù)字和p-記數(shù)法 (C99) |
%A | 浮點數(shù)、十六進制數(shù)字和P-記數(shù)法 (C99) |
%c | 一個字符 |
%d | 有符號十進制整數(shù) |
%e | 浮點數(shù)、e-記數(shù)法 |
%E | 浮點數(shù)、E-記數(shù)法 |
%f | 浮點數(shù),十進制記數(shù)法 |
%g | 根據(jù)數(shù)值不同自動選擇%f或者%e。%e格式在指數(shù)小于-4或者大于等于精度時使用 |
%G | 根據(jù)數(shù)值不同自動選擇%f或者%E。%E格式在指數(shù)小于-4或者大于等于精度時使用 |
%i | 有符號十進制整數(shù) (與%d相同) |
%o | 無符號八進制整數(shù) |
%p | 指針(就是指地址) |
%s | 字符串 |
%u | 無符號十進制整數(shù) |
%x | 使用十六進制數(shù)字0f 的無符號十六進制整數(shù) |
%X | 使用十六進制數(shù)字0F的無符號十六進制整數(shù) |
%% | 打印一個百分號 |
修飾符 | 意 義 |
標志 | 五種標志 (-、+、空格、# 和0) 都將在表三中描述,可以使用零個或多個標志 |
digit(s) | 字段寬度的最小值。如果該字段不能容納要打印的數(shù)或者字符串,系統(tǒng)會使用更寬的字段。示例:“%4d” |
.digit(s) | 精度。對于%e、%E和%f轉(zhuǎn)換,是將要在小數(shù)點的右邊打印的數(shù)字的位數(shù)。對于%g和%G轉(zhuǎn)換,是有效數(shù)字的最大位數(shù)。對于%s轉(zhuǎn)換,是將要打印的字符的最大數(shù)目。對于整數(shù)轉(zhuǎn)換,是將要打印的數(shù)字的最小位數(shù);如果必要,要使用前導(dǎo)零來達到這個位數(shù)。只使用“.”表示其后跟隨一個零,所以%.f與%.0f相同。示例:“%5.2f”打印一個浮點數(shù),他的字段寬度為5個字符,小數(shù)點后有兩個數(shù)字。 |
h | 和整數(shù)轉(zhuǎn)換說明符一起使用,表示一個short int 或者 unsigned short int 類型數(shù)值。 示例:“%hu”、“%hx”和“%6.4hd” |
hh | 和整數(shù)轉(zhuǎn)換說明符一起使用,表示一個signed char 或者unsigned char類型數(shù)值。 示例:“%hhu”、“%hhx”和“%6.4hhd” |
j | 和整數(shù)轉(zhuǎn)換說明符一起使用,表示一個intmax_t或uintmax_t值。 示例:“%jd”和“%8jX” |
l | 和整數(shù)說明符一起使用,表示一個long int 或者unsigned long int 類型值。 示例:“%ld”和“%8lu” |
ll | 和整數(shù)說明符一起使用,表示一個long long int或 unsigned long long int 類型值 (C99)。 示例:“%lld”和“%8llu” |
L | 和浮點轉(zhuǎn)換說明符一起使用,表示一個long double值。 示例:“%Lf”和“%10.4Le” |
t | 和整數(shù)轉(zhuǎn)換說明符一起使用,表示一個ptrdiff_t值(與兩個指針之間的差相對應(yīng)的類型) (C99) 示例:“%td”和“%12ti” |
z | 和整數(shù)轉(zhuǎn)換說明符一起使用,表示一個size_t值(sizeof返回的類型) (C99)。 示例:“%zd”和“%12zx” |
修飾符 | 意 義 |
- | 項目是左對齊的,也就是說,會把項目打印在字段的左側(cè)開始處。示例:“%-20s” |
+ | 有符號的值若為正,則顯示帶加號的符號;若為負,則帶減號的符號。示例:“%+6.2f” |
(空格) | 有符號的值若為正,則顯示時帶前導(dǎo)空格(但是不顯示符號);若為負,則帶減號符號。+標志會覆蓋空格標志。示例:“% 6.2f” |
# | 使用轉(zhuǎn)換說明的可選形式。若為%o格式,則以0開始;若為%x和%X格式,則以0x或0X開始,對于所有的浮點形式,#保證了即使不限任何數(shù)字,也打印一個小數(shù)點字符。對于%g和%G格式,它防止尾隨零被刪除。示例:“%#o”、“%#8.0f”和“%+#10.3E” |
0 | 對于所有的數(shù)字格式,用前導(dǎo)零而不是用空格填充字段寬度。如果出現(xiàn)-標志或者指定了精度(對于整數(shù))則忽略該標志。示例:“%010d”和“%08.3f” |
轉(zhuǎn)換說明符 | 意 義 |
%c | 把輸入解釋成一個字符 |
%d | 把輸入解釋成一個有符號十進制整數(shù) |
%e,%f,%g, %a | 把輸入解釋成一個浮點數(shù) (%a是C99標準) |
%E,%F,%G,%A | 把輸入解釋成一個浮點數(shù) (%A是C99標準) |
%i | 把輸入解釋成一個有符號十進制整數(shù) |
%o | 把輸入解釋成一個有符號八進制數(shù) |
%p | 把輸入解釋成一個指針(地址) |
%s | 把輸入解釋成一個字符串;輸入的內(nèi)容以一個非空白字符作為開始,并且包含知道下一個空白字符的全部字符 |
%u | 把輸入解釋成一個無符號十進制整數(shù) |
%x,%X | 把輸入解釋成一個有符號十六進制整數(shù) |
修飾符 | 意 義 |
* | 滯后賦值。示例:“%*d” |
digit(s) | 最大字段寬度;在達到最大字段寬度或者遇到第一個空白字符時(不管哪一個先發(fā)生都一樣)停止對輸入項的讀取。示例:“%10s” |
hh | 把整數(shù)讀作signed char 或 unsigned char 。示例:“%hhd”“%hhu” |
ll | 把整數(shù)讀作long long或者 unsigned long long (C99)。示例:“%lld”“%llu” |
h,l或L | “%hd”和“hi”指示該值將會存儲在一個short int中。 “%ho”“%hx”和“%hu”指示該值將會存儲在一個unsigned short int中。 “%ld”和“%li”指示該值將會存儲在一個long中。 “%lo”“%lx”和“%lu”指示該值將會存儲在一個unsigned long中。 “%le”“%lf”和“%lg”指示該值以double類型存儲。將L(而非l)與e、f和g一起使用指示該值以long double類型存儲。 如果沒有這些修飾符,d、i、o和x指示int類型,而e、f和g指示float類型。 |