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