c語言中格式字串的一般形式為: %[標誌][輸出最小寬度][.精度][長度]型別, 其中方括號中的項為可選項。
一、型別
我們用一定的字元用以表示輸出資料的型別,其格式符和意義下表所示:
字元 意義
a 浮點數、十六進製制數字和p-計數法(c99)
a 浮點數、十六進製制數字和p-計數法(c99)
c 輸出單個字元
d 以十進位制形式輸出帶符號整數(正數不輸出符號)
e 以指數形式輸出單、雙精度實數
e 以指數形式輸出單、雙精度實數
f 以小數形式輸出單、雙精度實數
g 以%f%e中較短的輸出寬度輸出單、雙精度實數,%e格式在指數小於-4或者大 於等於精度時使用
g 以%f%e中較短的輸出寬度輸出單、雙精度實數,%e格式在指數小於-4或者大於等於精度時使用
i 有符號十進位制整數(與%d相同)
o 以八進位制形式輸出無符號整數(不輸出字首o)
p 指標
s 輸出字串
x 以十六進製制形式輸出無符號整數(不輸出字首ox)
x 以十六進製制形式輸出無符號整數(不輸出字首ox)
u 以十進位制形式輸出無符號整數
二、標誌
標誌字元為-、+、#、空格和0五種,其意義下表所示:
字元 意 義
- 結果左對齊,右邊填空格
+ 輸出符號(正號或負號)
空格 輸出值為正時冠以空格,為負時冠以負號
# 對c,s,d,u類無影響;對o類,在輸出時加字首0;對x類,在輸出時加字首0x或者0x;對g,g 類防止尾隨0被刪除;
對於所有的浮點形式,#保證了即使不跟任何數字,也列印乙個小數點字元
0 對於所有的數字格式,用前導0填充字段寬度,若出現-標誌或者指定了精度(對於整數),忽略
三、輸出最小寬度
用十進位制整數來表示輸出的最少位數。若實際位數多於定義的寬度,則按實際位數輸出,若實際位數少於定義的寬度則補以空格或0。
/* 測試標誌字元為-、+、#、空格四種 */
#include "stdio.h"
#include "conio.h"
main()
四、精度
精度格式符以「.」開頭,後跟十進位制整數。本項的意義是:如果輸出數字,則表示小數的位數;如果輸出的是字元,則表示輸出字元的個數;若實際位數大於所定義的精度數,則截去超過的部分。
/* 測試精度 */
#include "stdio.h"
#include "conio.h"
main()
五、長度
長度格式符為h,l兩種,h表示按短整型量輸出,l表示按長整型量輸出。
h和整數轉換說明符一起使用,表示乙個short int 或者unsigned short int型別的數值,
示例:%hu,%hx,%6.4hd
hh和整數轉換說明符一起使用,表示乙個short int 或者unsigned short型別的數值,
示例:%hhu,%hhx,%6.4hhd
j和整數轉換說明符一起使用,表示乙個intmax_t或者uintmax_t型別的數值,
示例:%jd,%8jx
l和整數轉換說明符一起使用,表示乙個long int 或者unsigned long int型別的數值,
示例:%ld,%8lu
ll和整數轉換說明符一起使用,表示乙個long int 或者unsigned long int型別的數值(c99),
示例:%lld,%8llu
l和浮點轉換說明符一起使用,表示乙個long double的值,示例:%lf,%10.4le
t和整數轉換說明符一起使用,表示乙個ptrdiff_t值(兩個指標之間的差相對應的型別)(c99),
示例:%td,%12ti
z和整數轉換說明符一起使用,表示乙個size_t值(sizeof返回的型別)(c99),
示例:%zd,%12zx
例項main()
a<--15
b<--138.3576278
c<--35648256.3645687
d<--'p'
main()
使用printf函式時還要注意乙個問題,那就是輸出表列中的求值順序。不同的編譯系統不一定相同,可以從左到右,也可從右到左。turbo c是按從右到左進行的
main()
六、特殊用法
對於m.n的格式還可以用如下方法表示
char ch[20];
printf("%*.*s\n",m,n,ch);
前邊的*定義的是總的寬度,後邊的定義的是輸出的個數。分別對應外面的引數m和n 。可以在語句之外對引數m和n賦值,從而控制輸出格式。
還一種輸出格式 %n 可以將所輸出字串的長度值賦紿乙個變數, 見下例:
int slen;
printf("hello world%n", &slen);
執行後變數被賦值為11。
這種格式輸出已經確認為乙個安全隱患,並且已禁用。
特別注意下%*.*s這種用法
c語言中格式化
符號 作用 d 十進位制有符號整數 u 十進位制無符號整數 f 浮點數 s 字串 c 單個字元 p 指標的值 e 指數形式的浮點數 x,x 無符號以十六進製制表示的整數 0 無符號以八進位制表示的整數 g 自動選擇合適的表示法 說明 1 可以在 和字母之間插進數字表示最大場寬。例如 3d 表示輸出3...
Python中格式化字串
1.c 以ascii碼的格式輸出 2.s 以字串的格式輸出 3.d 以整數的格式輸出 4.o 以無符號八進位制的格式輸出 5.x 以無符號十六進製制的格式輸出 6.x 以無符號十六進製制的格式輸出 大寫 7.f 以實數的格式輸出,可指定小數點後的精度 例 print 2f 變數 以保留2位小數的格式...
python中格式化字串
語法 它通過 和 來代替 注意 字串的format函式可以接受無限個引數,位置可以不按順序,可以不用或者用多次,不過2.6不能為空 2.7才可以。通過位置 in 1 format kzc 18 out 1 kzc,18 in 2 format kzc 18 out 2 kzc,18 in 3 for...