printf的詳細用法

記錄一:

程序段如下:

#include <stdio.h>

int main()
{
	unsigned char data[] = "123456789";
	int a = 15;
	int b = 7;

	//控制最小字符寬度,其中*號使用第一個參數填充
	printf("%0*s\n", a, data);
	printf("%0*s\n", b, data);

	//顯示輸出的位數
	printf("%.*s\n", a, data);
	printf("%.*s\n", b, data);
	
	printf("%0*.*s\n", a, b, data);

	return 0;	
}

結果如下:

 000000123456789
123456789
123456789
1234567
000000001234567

分析:

小數點.後“*”表示輸出位數,具體的數據來自參數表
printf格式字符串中,與寬度控制和精度控制有關的常量都可以換成變量,方法就是使用一個“*”代替那個常量,然後在後面提供變量給“*”。同樣,小數點.前也可以添加*,也要用戶輸入一個位寬值來代替,表示輸出的字符所佔位寬。

總結:

printf的一般形式爲printf("格式控制字符串",輸出列表),格式控制字符串形式爲:[標誌][輸出最小寬度][.精度][長度]類型。

其中方括號[]中的項爲可選項。 各項的意義介紹如下: 

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 表示按長整型量輸出。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章