1. 程式人生 > >關於printf輸出格式的總結

關於printf輸出格式的總結

基礎的東西總是很容易忘

要時常總結回顧才能牢記

printf函式是一個標準庫函式,它的函式原型在標頭檔案“stdio.h”中。但作為一個特例,不要求在使用 printf 函式之前必須包含stdio.h檔案。printf函式呼叫的一般形式為:
    printf(“格式控制字串”, 輸出表列)
其中格式控制字串用於指定輸出格式。格式控制串可由格式字串和非格式字串兩種組成。格式字串是以%開頭的字串,在%後面跟有各種格式字元,以說明輸出資料的型別、形式、長度、小數位數等。如:

  • “%d”表示按十進位制整型輸出;
  • “%ld”表示按十進位制長整型輸出;
  • “%c”表示按字元型輸出等。
非格式字串原樣輸出,在顯示中起提示作用。輸出表列中給出了各個輸出項,要求格式字串和各輸出項在數量和型別上應該一一對應。

格式字串

1) 型別
型別字元用以表示輸出資料的型別,其格式符和意義如下表所示:
格式字元 意義
d 以十進位制形式輸出帶符號整數(正數不輸出符號)
o 以八進位制形式輸出無符號整數(不輸出字首0)
x,X 以十六進位制形式輸出無符號整數(不輸出字首Ox)
u 以十進位制形式輸出無符號整數
f 以小數形式輸出單、雙精度實數
e,E 以指數形式輸出單、雙精度實數
g,G 以%f或%e中較短的輸出寬度輸出單、雙精度實數
c 輸出單個字元
s 輸出字串
2) 標誌
標誌字元為 -、+、# 和空格四種,其意義下表所示:
標 志 意義
- 結果左對齊,右邊填空格
+ 輸出符號(正號或負號)
空格 輸出值為正時冠以空格,為負時冠以負號
# 對c、s、d、u類無影響;
對o類,在輸出時加字首o;
對x類,在輸出時加字首0x;
對e、g、f 類當結果有小數時才給出小數點。

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

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

5) 長度
長度格式符為h、l兩種,h表示按短整型量輸出,l表示按長整型量輸出。

#include<stdio.h> 
#include<string.h> 
int main() 

char c, s[20]; 
int a=1234;
float f=3.141592653589; 
double x=0.12345678912345678; 
strcpy(s, "Hello,World"); 
c='\x41'; 
printf("a=%d\n", a);//按照十進位制整數格式輸出,顯示 a=1234
printf("a=%d%%\n", a);//輸出%號 結果 a=1234%
printf("a=%6d\n", a);//輸出6位十進位制整數 左邊補空格,顯示 a= 1234
printf("a=%06d\n", a);//輸出6位十進位制整數 左邊補0,顯示 a=001234
printf("a=%2d\n", a);//a超過2位,按實際輸出 a=1234
printf("a=%-6d\n", a);///輸出6位十進位制整數 右邊補空格,顯示 a=1234
printf("f=%f\n", f);//浮點數有效數字是7位,結果 f=3.141593
printf("f=6.4f\n", f);//輸出6列,小數點後4位,結果 f=3.1416
printf("x=%lf\n", x);//輸出長浮點數 x=0.123457
printf("x=%18.16lf\n", x);//輸出18列,小數點後16位,x=0.1234567891234567
printf("c=%c\n", c);     //輸出字元 c=A
printf("c=%x\n", c);//以十六進位制輸出字元的ASCII碼 c=41
printf("s[]=%s\n", s);//輸出陣列字串s[]=Hello,World
printf("s[]=%6.9s\n", s);//輸出最多9個字元的字串 s[]=Hello,Wor
return 0;
}