標籤:個數 ascii 小數點 符號 資料 無符號 字串 庫函數 字母
printf函數稱為格式輸出函數,其關鍵字最末一個字母f即為“格式”(format)之意。其功能是按使用者指定的格式,把指定的資料顯示到顯示器螢幕上。
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;
}
printf輸出格式總結