C語言格式化輸入輸出-轉換說明符的用法

C語言格式化輸入輸出-轉換說明符的用法

本文主要介紹C語言中格式化輸入輸出語句中轉換說明(conversition specification)的用法ui

printf sprintf fprintf的轉換說明符

%[flags][width][.prec][類型修飾]typespa

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_tuintmax_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]typeio

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字符(不忽略空白字符)
相關文章
相關標籤/搜索