本文主要介紹C語言中格式化輸入輸出語句中轉換說明(conversition specification)的用法ui
printf
sprintf
fprintf
的轉換說明符%[flags][width][.prec][類型修飾]type
spa
flags | 含義 |
---|---|
- | 左對齊 |
+ | 有符號值爲正數時,則在值前面加上正號;若爲負,則在值前面加上負號 |
(space) | 有符號值爲正數時,則在值前面顯示空格;若爲負,則在值前面加上負號 |
0 | 對於數值格式,使用0代替空格填充不足的字符;對於整數格式,若是使用了- 標誌或者指定精度,則該flag不起做用 |
# | 把結果轉換成另外一種格式。 若是爲%o,則以0開始; 若是爲%x或%X,則以0x或0X開始; 對於全部浮點類型,強制保留小數點; 對於%g或%G格式,則使其包含尾隨0 |
width | 含義 | .prec | 含義 |
---|---|---|---|
(number) | 輸出的最小長度(字符數) | .(number) | 輸出的精度。 對於%e,%E和%f而言,表示小數點右邊數字的位數; 對於%g,%G而言,表示有效數字最大位數; 對於%s而言,表示待打印字符的最大數量; 對於整型,表示待打印數字的最小位數; 單獨使用 . 與.0 的做用相同 |
* | (number)的值由待打印項列表中對應的變量決定 | .* | (number)的值由待打印項列表中對應的變量決定 |
類型修飾用於改變type所指的變量的顯示形式,其組合關係以下表所示指針
類型修飾 | d i | u o x X | f F e E g G a A | c | s | p | n |
---|---|---|---|---|---|---|---|
(none) | int | unsigned int | double | int | char* | void* | int* |
hh | signed char | unsigned char | signed char* | ||||
h | short int | unsigned short int | short int* | ||||
l | long int | unsigned long int | wint_t | wchar_t* | long int* | ||
ll | long long int | unsigned long long int | long long int* | ||||
j | intmax_t | uintmax_t | intmax_t* | ||||
z | size_t | size_t | size_t* | ||||
t | ptrdiff_t | ptrdiff_t | ptrdiff_t* | ||||
L | long double |
注:code
(1) intmax_t
和uintmax_t
定義在stdint.h
中,是128位的整數類型ci
(2) size_t
定義在stddef.h
中(stdio.h
已經包含該頭文件),是sizeof()
的值的類型字符串
(3) ptrdiff_t
是表示兩個指針差值的類型it
type | 用於 | type | 用於 |
---|---|---|---|
i或d | int | a或A | 十六進制浮點數 |
u | unsigned int | c | char |
o | 無符號八進制整數 | C | ISO寬字符類型(wchar_t) |
x或X | 無符號十六進制整數(X使用大寫) | s | char*字符串 |
f或F | 浮點數類型(默認保留六位小數) | p | 指針(輸出十六進制地址) |
e或E | 顯示爲科學計數法(保留六位小數) | n | 不輸出任何字符,可是會將到該位置前輸出的字符數存入後面對應的指針(默認爲int*)所指的變量中 |
g或G | 根據數值不一樣自動選擇是否使用科學計數法表示(不含尾隨0),長度更短者優先 | % | 輸出字符'%' |
scanf
sscanf
fscanf
的轉換說明符%[flag]type
io
flag | 含義 |
---|---|
* | 跳過對應的輸入項 (例如在語句 scanf("%*d %*d %d",&n); 中,僅將讀取到的第三個整數存入變量n 中,前兩個值被忽略) |
(number) | 最大字符數。輸入達到最大字符數或第一次遇到空白字符時將中止 |
[flag]一樣包含類型修飾部分,詳見格式化輸出部分的「類型修飾」table
type | 用於 |
---|---|
d或i | 把輸入解釋爲有符號十進制整數(int) |
u | 把輸入解釋爲無符號十進制整數(unsigned int) |
o | 把輸入解釋爲有符號八進制整數 |
x | 把輸入解釋爲有符號十六進制整數 |
s | 字符串(從第一個非空白字符開始,到下一個空白字符以前的全部字符都是輸入) |
p | 把輸入解釋成指針(地址) |
a,e,f,g或A,E,F,G | 把輸入解釋成浮點數 |
c | 把輸入解釋成char字符(不忽略空白字符) |