printf函數(shù)叫做格式輸出函數(shù),其功能是按照用戶指定的格式,把指定的數(shù)據(jù)輸出到屏幕上,printf函數(shù)的格式為:
printf("格式控制字符串",輸出表項(xiàng));
其中格式控制字符串用來說明輸出表項(xiàng)中各輸出項(xiàng)的輸出格式(好比我要吃蘋果,告訴printf是做成罐頭吃還是直接吃)。輸出表項(xiàng)列出了要輸出的項(xiàng),各輸出項(xiàng)之間用逗號(hào)分開。輸出表項(xiàng)也可以沒有,則表示輸出的是格式字符串本身。
格式控制字符串有兩種:格式字符串和非格式字符串。非格式字符串在輸出的時(shí)候原樣打??;格式字符串是以%打頭的字符串,在“%”后面跟不同格式字符,用來說明輸出數(shù)據(jù)的類型、形式、長(zhǎng)度、小數(shù)位數(shù)等。格式字符串的形式為:
% [輸出最小寬度] [.精度] [長(zhǎng)度] 類型
例如:%d格式符表示用十進(jìn)制整形格式輸出,%f表示用實(shí)型格式輸出,%5.2f格式表示輸出寬度為5(包括小數(shù)點(diǎn)),并包含2位小數(shù)。
常用的輸出格式及含義如下:
格式字符 | |
d , i | 以十進(jìn)制形式輸出有符號(hào)整數(shù)(正數(shù)不輸出符號(hào)) |
O | 以八進(jìn)制形式輸出無符號(hào)整數(shù)(不輸出前綴0) |
x | 以十六進(jìn)制形式輸出無符號(hào)整數(shù)(不輸出前綴0x) |
U | 以十進(jìn)制形式輸出無符號(hào)整數(shù) |
f | 以小數(shù)形式輸出單、雙精度類型實(shí)數(shù) |
e | 以指數(shù)形式輸出單、雙精度實(shí)數(shù) |
g | 以%f或%e中較短輸出寬度的一種格式輸出單、雙精度實(shí)數(shù) |
C | 輸出單個(gè)字符 |
S | 輸出字符串 |
關(guān)于printf的更多用法,您可以自行上機(jī)試驗(yàn)。
例:
#include<stdio.h> int main() { int a=12; float b=3.1415; char c='A'; printf("%d\n",a); printf("0%o\n",a); printf("0x%x\n",a); printf("%3.2f\n",b); printf("%c\n",c); getchar(); return 0; }
*修飾符在printf()中的用法:
假如您不想事先指定字段寬度,而是希望由程序來制定該值,那么您可以在字段寬度部分使用*代替數(shù)字來達(dá)到目的,但是您也必須使用一個(gè)參數(shù)來告訴函數(shù)寬度的值是多少。具體的說,如果轉(zhuǎn)換說明符為%*d,那么參數(shù)列表中應(yīng)該包括一個(gè)*的值和一個(gè)d的值,來控制寬度和變量的值。該技術(shù)也可以和浮點(diǎn)值一起使用來指定精度和字段寬度。
您可以參考下面的例子:
/*使用可變寬度輸出字段*/ #include<stdio.h> int main(void) { unsigned width,precision; int number = 256; double weight = 25.5; printf("Please input number's width:\n"); scanf("%d",&width); printf("The number is: %*d\n",width,number); printf("Then please input width and precision:\n"); scanf("%d %d",&width,&precision); printf("Weight = %*.*f\n",width,precision,weight); return 0; }
gcc下運(yùn)行過程及結(jié)果如下:
Please input number's width: 6 The number is: 256 Then please input width and precision: 8 3 Weight = 25.500
關(guān)于printf()的返回值:
printf函數(shù)的返回值是返回所打印的字符的數(shù)目。如有輸出錯(cuò)誤,那么printf()會(huì)返回一個(gè)負(fù)數(shù)(printf()的一些老版本會(huì)有不同的值)。
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競(jìng)賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:
一點(diǎn)編程也不會(huì)寫的:零基礎(chǔ)C語言學(xué)練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進(jìn)階課程
從零到寫出一個(gè)爬蟲的Python編程課程
只會(huì)語法寫不出代碼?手把手帶你寫100個(gè)編程真題的編程百練課程
信息學(xué)奧賽或C++選手的 必學(xué)C++課程
藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競(jìng)賽課入門課程
手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程