對c語言中printf函數的個人理解

對c語言中printf函數的個人理解

首先來說printf函數。

對於剛剛接觸c語言的人來說,比如我自己。printf函數應該是最早接觸的函數。我們用它來做出第一個程序,即在屏幕上顯示“hello world”。所用的代碼是:printf(“hello world”)。看着這個代碼覺得printf函數很簡單啊,就是在括號里加個引號嘛。可是再往後面學,發現printf函數的代碼看不懂了。printf(“%d,%d”,a,b)這是什麼東西?printf(“我們班的平均成績爲%d”,average)這又是什麼東西?

不懂就要多查,多嘗試。經過查閱資料,編代碼測試,終於對這個函數有了一些瞭解。我覺得printf(“我們班的平均成績爲%d”,average)這個執行語句裏%d就是像是一個代詞,代指後面對應的average。再比如printf(“我們班的平均成績爲%d,我們班有%d個人”,average,number)這個執行語句裏有兩個%d,就相當於兩個代詞,依次代指average和number,翻譯過來就是“我們班的平均成績爲average,我們班有number個人”。這裏的%d只是用來確定average和number的輸出格式的。那麼printf(“hello world”)沒啥沒用%什麼呢,因爲沒用參數要輸出。平均成績average是一個參數,我們要把它的數值輸出,所以用了上述的方法。

既然是用來確定格式,那麼就有很多種格式,於是就不止有%d能表示形式。下面把printf格式相關內容彙總一下,既加深我的記憶,也方面大家查閱。

printf函數的表示形式爲printf(“正常字符+格式控制符”,參數,參數,參數.......)

舉例說明:printf(“我們班的平均成績爲%d,我們班有%d個人”,average,number),這裏“我們班的平均成績爲” 、“  ,”、“我們班有”、“個人”爲正常字符,它們會按原樣輸出;兩個%d均爲格式控制符;average和number爲參數。

參數的個數必須與前面引號裏的格式控制符的個數相同,按照從左到右的順序一一對應。參數之間要用逗號隔開。


格式控制字符串 數據類型 含義
%d/i int 有符號的十進制整數
%u unsigned int 無符號的十進制整數
%o unsigned int 無符號的八進制整數
%x/X unsigned int 無符號的十六進制整數,x對應的是abcdef,X對應的是ABCDEF(不輸出前綴0X)
%f float or double 單精度浮點數或雙精度浮點數
%e/E double 科學計數法表示的數,此處“e”的大小寫代表輸出時“e”的大小寫
%g/G double 使用以上兩種中最短的形式
%c char 字符型
%s/S 字符串
p void* 以十六進制形式輸出指針
%% 不進行轉換,輸出字符%本身
 



下面是測試代碼及結果:


#include<stdio.h>
int main(void)
{
	/*完整格式爲:	%-0m.nl或h格式字符*/
	/* -代表左對齊輸出,如果省略則表示右對齊輸出*/
	/* 0表示空位出填0,如果省略則表示空位不填*/
	/* m指域寬,即對應的輸出項在輸出設備上所佔的字符數。
	   n指精度。用於說明輸出的實型數的小數位數。未指定n時,隱含的精度爲n=6位。*/
	/* l對整型指long型,對實型指double型。
	   h用於將整型的格式字符修正爲short型*/
	/*對d格式的例子*/ 
	printf("下面是對d格式的例子\n"); 
	printf("%5d\n",22222);/*要求輸出5個字符,右對齊,剛好5個字符*/
	printf("%-5d\n",222);/*要求輸出5個字符,左對齊,由於不足5個字符,會空兩格*/
	printf("%5d\n",222);/*要求輸出5個字符,右對齊,由於不足5個字符,會空兩格*/
	printf("%05d\n",222);/*要求輸出5個字符,右對齊,由於不足5個字符,用0補上*/
	printf("%05d\n\n",222222);/*要求輸出5個字符,由於大於5個字符,按實際位數輸出*/
	
	printf("下面是對s格式的例子\n");
	printf("%s\n","example") ;/*輸出字符串example*/
	printf("%5s\n","example") ;/*要求輸出字符串佔5列,字符串example大於5,按實際輸出*/
	printf("%10s\n","example") ;/*要求輸出字符串佔10列,字符串example小於10,左邊用空格補上*/
	printf("%5.3s\n","example") ;/*要求輸出字符串佔5列,但只取字符串左端的3個,左邊用空格補上*/
	printf("%5.7s\n\n","example") ;/*要求輸出字符串佔5列,但取字符串左端的7個,由於7>5,故要保證7個字符輸出*/
	
	printf("下面是對f格式的例子\n");
	printf("%f\n",2.7654321); /*不人爲指定寬度,故整數部分全部輸出,小數部分最多輸出六位*/
	printf("%6.5f\n",2.7654321); /*指定寬度爲6,小數部分爲5位*/ 
	printf("%6.7f\n",2.765); /*指定寬度爲6,小數部分爲7位*/ 	
}



對於m.n的格式還可以用如下方法表示:printf("%*.*s\n",m,n,字符串);(其中m和n是在該語句外定義的。)


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