C語言庫函數(shù)-printf()
printf函數(shù)的聲明如下:
int printf(const char *format, ...)
printf() 的格式控制字符串組成如下:
%[flags][width][.precision][length]specifier
%[標(biāo)志][最小寬度][.精度][長度]說明符,其中[]代表可選的。
一、flags(標(biāo)志)
1.1、-
在給定的字段寬度內(nèi)左對齊,默認(rèn)是右對齊。如下圖,當(dāng)以10個(gè)字符寬度輸出時(shí)候,默認(rèn)是右對齊,如果在輸出時(shí)加入-標(biāo)志,則會(huì)按照左對齊輸出。
1.2、+
強(qiáng)制在結(jié)果之前顯示加號或減號(+ 或 -),即正數(shù)前面會(huì)顯示 + 號。默認(rèn)情況下,只有負(fù)數(shù)前面會(huì)顯示一個(gè) - 號。如下圖,當(dāng)僅以%d輸出8時(shí),僅僅輸出8,而不會(huì)在8的前面加上正號。但是如果在輸出的時(shí)候加上+標(biāo)志,則會(huì)在結(jié)果顯示前加入正號。
1.3、(space)
如果沒有寫入任何符號,則在該值前面插入一個(gè)空格。同樣看上面的例子,在以% d輸出時(shí)。在8的前面有一個(gè)空格。
1.4、#
與 o、x 或 X 說明符一起使用時(shí),非零值前面會(huì)分別顯示 0、0x 或 0X。與 e、E 和 f 一起使用時(shí),會(huì)強(qiáng)制輸出包含一個(gè)小數(shù)點(diǎn),即使后邊沒有數(shù)字時(shí)也會(huì)顯示小數(shù)點(diǎn)。默認(rèn)情況下,如果后邊沒有數(shù)字時(shí)候,不會(huì)顯示顯示小數(shù)點(diǎn)。與 g 或 G 一起使用時(shí),結(jié)果與使用 e 或 E 時(shí)相同,但是尾部的零不會(huì)被移除。如下圖,第一個(gè)是以十進(jìn)制輸出8,第二個(gè)是以八進(jìn)制輸出10,轉(zhuǎn)換成二進(jìn)制位001 000,剛好對應(yīng)十進(jìn)制為8,第三個(gè)是以十六進(jìn)制輸出,只不過是在十六進(jìn)制標(biāo)識0x,第四個(gè)是以八進(jìn)制輸出,在輸出結(jié)果前加入八進(jìn)制標(biāo)識0,以0開頭的數(shù)字就是八進(jìn)制,例如定義一個(gè)變量int a = 010;以十進(jìn)制輸出a就是8.
1.5、0
在指定填充 padding 的數(shù)字左邊放置零(0),而不是空格,這個(gè)是跟寬度參數(shù)一塊用。如下圖,其中3是可選項(xiàng)width的參數(shù),代表三個(gè)寬度,如果前面加入0,則代表前面以0填充而不是空格填充。
二、width(寬度)
2.1、(number)
要輸出的字符的最小數(shù)目。如果輸出的值短于該數(shù),結(jié)果會(huì)用空格填充。如果輸出的值長于該數(shù),結(jié)果不會(huì)被截?cái)唷?br>
2.2、*
寬度在 format 字符串中未指定,但是會(huì)作為附加整數(shù)值參數(shù)放置于要被格式化的參數(shù)之前。如下圖,如果想和上面的圖輸出一至,寬度可以作為一個(gè)參數(shù)傳遞實(shí)現(xiàn)相同輸出。
三、precision(精度)
同width用法相同。
四、length(長度)
在此我們只要知道hh占一個(gè)字節(jié),h占兩個(gè)字節(jié),l占四個(gè)字節(jié),ll占八字節(jié)即可。如下圖,將~0以十六進(jìn)制輸出。
五、specifier(說明符)
說明符是必選項(xiàng),比較常用。說兩個(gè)不經(jīng)常用到的,如下圖,如需要打印%符號,只需%%即可,如果需要輸出引號則需要加轉(zhuǎn)義字符\。
所有的測試如下,稍微做一些變動(dòng)。
如何快速記住格式呢,就記首字母吧,F(xiàn)WPLS,多念幾次就記住了。且慢,突然想到一個(gè)好的記憶方法,在這字母加入一個(gè)U字母,也就是U(你),F(xiàn)WPLUS,后四個(gè)字母plus是加的意思,F(xiàn)W聯(lián)想一下,第一個(gè)想到的就是FW(廢物),巧了,搜狗也是。連在一塊就是廢物+,而且還加了一個(gè)U。噗哈哈...