printf輸出格式

2021-09-21 06:14:34 字數 4411 閱讀 3712

c中格式字串的一般形式為: %[標誌][輸出最小寬度][.精度][長度]型別, 其中方括號中的項為可選。

(1)型別型別字元用以表示輸出資料的型別,其格式符和意義下表所示:

表示輸出型別的格式字元

格式字元意義

a浮點數、十六進製制數字和p-計數法(c99)

a浮點數、十六進製制數字和p-計數法(c99)

c輸出單個字元

d以十進位制形式輸出帶符號整數(正數不輸出符號)

e(e)

以指數形式輸出單、雙精度實數

f以小數形式輸出單、雙精度實數

g(g)

以%f%e中較短的輸出寬度輸出單、雙精度實數,%e格式在指數小於-4或者大 於等於精度時使用

i有符號十進位制整數(與%d相同)

o以八進位制形式輸出無符號整數(不輸出字首o)p指標

s輸出字串

x(x)

以十六進製制形式輸出無符號整數(不輸出字首ox)

u以十進位制形式輸出無符號整數

(2)標誌

標誌字元為-、+、#、空格和0五種,其意義下表所示:

標誌格式字元

標 志 意 義

-結果左對齊,右邊填空格

+輸出符號(正號或負號)

空格輸出值為正時冠以空格,為負時冠以負號

#對c,s,d,u類無影響;對o類,在輸出時加字首0;對x類, 在輸出時加字首0x或者0x;對g,g 類防止尾隨0被刪除;對於所有的浮點形式,#保證了即使不跟任何數字,也列印乙個小數點字元

0對於所有的數字格式,用前導0填充字段寬度,若出現-標誌或者指定了精度(對於整數),忽略

(3)輸出最小寬度

用十進位制整數來表示輸出的最少位數。若實際位數多於定義的寬度,則按實際位數輸出,若實際位數少於定義的寬度則補以空格或0。

/*   以十進位制形式輸出帶符號整數(正數不輸出符號)   */

printf("*%-10d*\n", 223); //*223 *

printf("*%+10d*\n" , -232); //* -232*

printf("*%2d*\n" , 223); //*223*

printf("*%#d*\n" , -232); //*-232*

/* 以八進位制形式輸出無符號整數(不輸出字首o) */

printf("*%-10o*\n" , 223); //*337 *

printf("*%+10o*\n" , -232); //*37777777430*

printf("*%o*\n" , 223); //*337*

printf("*%#o*\n" , -232); //*037777777430*

printf("\n");

/* 以十六進製制形式輸出無符號整數(不輸出字首ox) */

printf("$%-10x$\n" , 223); //$df $

printf("$%010x$\n" , -232); //$00ffffff18$

printf("$% x$\n" , 223); //$df$

printf("$%#x$\n" , -232); //$0xffffff18$

printf("\n");

/* 以十進位制形式輸出無符號整數 */

printf("%-10u\n" , 223); //223

printf("%+10u\n" , -232); //4294967064

printf("% u\n" , 223); //223

printf("%#u\n" , -232); //4294967064

printf("\n");

/* 以小數形式輸出單、雙精度實數 */

printf("%-10f\n" , 223.11);

printf("%+10f\n" , 232.11111111); //+232.111111

printf("% f\n" , -223.11);

printf("%#f\n" , -232.11111111);

printf("\n");

/* 以指數形式輸出單、雙精度實數 */

printf("%-10e\n" , 223.11);

printf("%+10e\n" , 232.11111111); //+2.321111e+02

printf("% e\n" , -223.11);

printf("%#e\n" , -232.11111111);

printf("\n");

/* 以%f%e中較短的輸出寬度輸出單、雙精度實數 */

printf("%-10g\n" , 223.11);

printf("%+10g\n" , 232.111111111111); // +232.111

printf("% g\n" , -223.11);

printf("%#g\n" , -232.111111111111);

printf("\n");

/* 輸出單個字元 */

printf("%-10c\n" , 'a'); //a

printf("%+10c\n" , 97); // a

printf("% c\n" , 'a'); //a

printf("%#c\n" , 97); //a

printf("\n");

/* 輸出單個字元 */

printf("%-20s\n" , "this is a test!"); //this is a test!

printf("%+20s\n" , "2342o34uo23u"); // 2342o34uo23u

printf("% 20s\n" , "this is a test!"); // this is a test!

printf("%#s\n" , "2342o34uo23u"); //2342o34uo23u

(4)精度

精度格式符以「.」開頭,後跟十進位制整數。本項的意義是:如果輸出數字,則表示小數的位數;如果輸出的是字元,則表示輸出字元的個數;若實際位數大於所定義的精度數,則截去超過的部分。

printf("%.3d\n" , 5555);				//5555

printf("%.3f\n" , 0.88888);

printf("%.3f\n" , 0.9999);

printf("%.4s\n" , "this is a test!"); //this

(5)長度

長度格式符為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

int a=15;

float b=138.3576278;

double c=35648256.3645687;

char d='p';

printf("a=%d,%5d,%o,%x\n",a,a,a,a); //a=15, 15,17,f

printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b); //b=138.357620,138.357620,138.3576,1.383576e+02

printf("c=%lf,%f,%8.4lf\n",c,c,c); //c=35648256.364569,35648256.364569,35648256.3646

printf("d=%c,%8c\n",d,d); //d=p, p

printf輸出格式

轉換說明及作為結果的列印輸出 a 浮點數 十六進製制數字和p 記數法 a 浮點數 十六進製制數字和p 記法 c 乙個字元 d 有符號十進位制整數 e 浮點數 e 記數法 e 浮點數 記數法 f 浮點數 十進位制記數法 g 根據數值不同自動選擇 f或 e g 根據數值不同自動選擇 f或 e.i 有符號...

printf輸出格式

printf 格式化字串 格式化整型數值 格式化浮點值 printf 格式轉換的一般形式如下 flags width prec type 以中括號括起來的引數為選擇性引數,而 與type則是必要的。底下先介紹type的幾種形式 整數 d 整數的引數會被轉成一有符號的十進位制數字 u 整數的引數會被轉...

printf 輸出格式

printf函式稱為格式輸出函式,其關鍵字最末乙個字母f即為 格式 format 之意。其功能是按使用者指定的格式,把指定的資料顯示到顯示器螢幕上。printf函式呼叫的一般形式 printf函式是乙個標準庫函式,它的函式原型在標頭檔案 stdio.h 中。但作為乙個特例,不要求在使用 printf...