C語言中格式字串

2022-09-11 10:54:10 字數 2969 閱讀 5751

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...