1. 程式人生 > >C語言中printf和scanf函式基本的引數型別和輸出形式

C語言中printf和scanf函式基本的引數型別和輸出形式

printf函式的引數型別和輸出形式

字元 引數型別 輸出形式
d,i int 十進位制數
o int 無符號八進位制數(不含前導0)
x,X int 無符號十六進位制數(沒有前導0x或0X),10~15分別用abcdef(引數型別為小寫x時)和ABCDEF(引數型別為大寫X時)表示
u int 無符號十進位制數
c int 單個字元
s char* 順序列印字串中的字元,直到遇到’\0’或已列印了由精度指定的字元數為止
f double 十進位制小數[-]m.dddddd,其中d的個數由精度指定(預設值為6)
e,E double [-]m.dddddd e [±]xx(引數型別為小寫e)或[-]m.dddddd E [±]xx(引數型別為大寫E),其中d的個數由精度指定(預設值為6)
g,G double 如果指數小於-4或大於等於精度,則用%e或%E格式輸出,否則用%f格式輸出,尾部的0或小數點不列印
p void* 指標(取決於具體實現)

在轉換說明中,寬度或精度可以用*表示,這時,寬度或精度的值通過轉換下一引數(必須為int型別)來計算,例如為了從字串s中列印最多max個字元,可以使用下列語句:

printf("%.*s",max,s);

scanf函式的引數型別和輸入形式

字元 引數型別 輸入形式
d int* 十進位制整數
i int* 整數,可以是八進位制(以0開頭),也可以是十六進位制(以0x或0X開頭)
o int* 八進位制整數(可以以0開頭,也可以不以0開頭)
x int* 十六進位制整數(可以以0x或0X開頭,也可以不以0x或0X開頭)
u unsigned int* 無符號十進位制整數
c char* 單個字元,該轉換不跳過空白符
s char* 字串
e,f,g float* 十進位制小數[-]m.dddddd,其中d的個數由精度指定(預設值為6)
e,E double 浮點數