詳解C語言printf函式以及%佔位符知識
阿新 • • 發佈:2019-01-05
功能:
C語言中產生格式化輸出的函式(定義在stdio.h系統標頭檔案中),向終端輸出 (顯示屏等。。。);定義:
int printf(const char *format,[argument]); //返回值是int型別。
%佔位符
format 引數輸出的格式,定義格式為:%[flags][width][.perc][F|N|h|l]type
2.flags:規定輸出格式,取值和含義如下:
無 右對齊,左邊填充0和空格-
左對齊,右邊填充空格+ 在數字前增加符號 + 或 -0
將輸出的前面補上0,直到佔滿指定列寬為止(不可以搭配使用-)空格
輸出值為正時冠以空格,為負時冠以負號# 當type=c,s,d,i,u時沒有影響 type=o,x,X時,分別在數值前增加'0',"0x","0X"type=e,E,f時,總是使用小數點type=g,G時,除了數值為0外總是顯示小數點
無 按預設精度顯示0 當type=d,i,o,u,x時,沒有影響type=e,E,f時,不顯示小數點n(n=1,2,3...) 當type=e,E,f時表示的最大小數位數type=其他,表示顯示的最大寬度.* 格式列表中,下一個引數還是width 5.F|N|h|l 表示指標是否是遠指標或整數是否是長整數 F 遠指標n 近指標h 短整數或單精度浮點數l 長整數或雙精度浮點數前面扯了這麼多有幾個主要注意點:
double a = 1.5333;
printf("%-06.3lf", a);
這樣寫會有警告,螢幕列印:1.533[] ([]表示空格)簡單分析下,%lf表示double型別,小數點後面是三位,-0,表示輸出格式左對齊,然後0補齊右邊,假如補齊了就是 1.5330,不是跟後面.3(小數點後面保留三位矛盾了?),所以我把它改成-06.4試試,還是有警告,結果輸出1.5333,改成-07.4,輸出 1.5333[], 小數點也會在一個數據位(姑且叫這玩意兒).在 % 與 d 之間, ON,N表示輸出的數字的寬度,如果不夠就用0補齊左邊(重點) 比如設定UIImageView的animationImages屬性的時候,圖片名字依次是 00 01 02 03 04 05.。。。。那麼就用%02d(這個是UIKit裡面的東西,C只做瞭解).
在 % 與 d 之間, N, N表示輸出的數字的寬度,如果不夠就用空格補齊左邊
在 % 與 d 之間, -N, N表示輸出的數字的寬度,如果不夠就用空格補齊右邊
在 % 與 f 之間,可以有M.N, M 表示輸出數字所佔的寬度,N表示小數點後面的位數,如果不夠會用空格補齊左邊