Format 指定輸出格式,後面跟要輸出的變量
目前 printf 支持以下格式:
%c 單個字符
%d 十進制整數
%f 十進制浮點數
%o 八進制數
%s 字符串
%u 無符號十進制數
%x 十六進制數
%% 輸出百分號%
一個格式說明可以帶有幾個修飾符,用來指定顯示寬度,小數尾數及左對齊等:
- 左對齊
+ 在一個帶符號數前加'+'或'-'號
0 域寬用前導零來填充,而不是用空白符
域寬是一個整數,設置了打印一個格式化字符串的最小域。精度使用小數點後加數字表示的,給出每個轉換說明符所要輸出的字符個數。
注意:帶修飾符的顯示可能不正常。
數據格式說明由“%”開頭,形式爲 %<數據輸出寬度說明><格式符>,數據格式說明用在需要輸出變量或運算數值結果的時候,它的個數與輸出表列的個數一一對應。
數據寬度說明中如果實際數據小於寬度,則根據寬度是否大於零而左補空格或右補空格。如果實際數據大於寬度,按實際位數輸出。如果缺省寬度說明,則按實際寬度輸出。
CString.format('%10f', a);
10表示把a以10個字符寬度格式化
%f形式輸出,則小數部分爲6位;
例
%10f 若a的整數部分位數+小數點(1位)+小數部分位數大於等於10,則按實際a的形式格式化;
若a的整數部分位數+小數點(1位)+小數部分位數小於10,則在前面補空格,補足10位;
例
%.7f 則
a的小數部分位數若大於7,則截取7位小數,整數部分不變;
a的小數部分位數若小於等於7,則不滿7位的部分後面以0補足;
str.Format(_T('Left-justified integer: %.6d/n'), b);
%.6d
若整數b不滿6位則在最高爲前面補0;
若整數b大於等於6位則形式不變;
%6d
若整數b不滿6位,則在最高位前面補上空格,是之格式化爲6個字符寬度;
若整數b大於等於6位則形式不變。
附:printf
int printf(const char *format,[argument]);
format 參數輸出的格式,定義格式爲:
%[flags][width][.perc] [F|N|h|l]type
規定數據輸出方式,具體如下:
1.type 含義如下:
d 有符號10進制整數
i 有符號10進制整數
o 有符號8進制整數
u 無符號10進制整數
X/x 有符號16進制整數
F/f 浮點數
E/e 用科學表示格式的浮點數
g 使用%f和%e表示中的較精確者來表示浮點數 G 同g格式,但表示爲指數
c 單個字符
s 字符串
% 顯示百分號本身
p 顯示一個指針,near指針表示爲:XXXX
far 指針表示爲:XXXX:YYYY
n 相連參量應是一個指針,其中存放已寫字符的個數
2.flags 規定輸出格式,取值和含義如下:
無 右對齊,左邊填充0和空格
+ 左對齊,右邊填充空格
- 在數字前增加符號 + 或 -
一個空格 只對負數顯示符號
# 當type=c,s,d,i,u時沒有影響
type=o,x,X時,在數值前增加'0'字符
type=e,E,f時,總是使用小數點
type=g,G時,除了數值爲0外總是顯示小數點 3.width 用於控制顯示數值的寬度,取值和含義如下n(n=1,2,3...) 寬度至少爲n位,不夠以空格填充
0n(n=1,2,3...) 寬度至少爲n位,不夠左邊以0填充 * 格
式列表中,下一個參數還是width 4.prec 用於控制小數點後面的位數,取值和含義如下:
無 按缺省精度顯示
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 長整數或雙精度浮點數
1.一般格式
printf(格式控制,輸出表列)
例如:printf("i=%d,ch=%c/n",i,ch);
說明:
(1)“格式控制”是用雙撇號括起來的字符串,也稱“轉換控制字符串”,它包括兩種信息:
①格式說明:由“%”和格式字符組成,它的作用是將輸出的數據轉換爲指定的格式輸出。
②普通字符,即需要原樣輸出的字符。
(2)“輸出表列”是需要輸出的一些數據,可以是表達式
(3)printf函數的一般形式可以表示爲
printf(參數1,參數2,……,參數n)
功能是將參數2~參數n按參數1給定的格式輸出
2.格式字符(9種)
(1)d(或i)格式符。用來輸出十進制整數,有以下幾種用法:
①%d,按整型數據的實際長度輸出。
②%md,m爲指定的輸出字段的寬度。如果數據的位數小於m,則左端補以空格,若大於m,則按實際位數輸出。
③%ld(%mld 也可),輸出長整型數據。
例如:long a=123456;
printf("%ld",a);
(2)o格式符,以八進制數形式輸出整數。格式:%o,%mo,%lo,%mlo都可。
(3)x(或X)格式符,以十六進制數形式輸出整數。格式:%x,%mx,%lx,%mlx都可。
(4)u格式符,用來輸出unsigned型數據,即無符號數,以十進制數形式輸出。格式:%u,%mu,%lu都可。
參見:li4-3.c/*無符號數據的輸出*/
(5)c格式符,用來輸出一個字符。格式:%c,%mc都可。
(6)s格式符,用來輸出一個字符串。格式:%s,%ms,%-ms,%m.ns,%-m.ns都可。
參見:li4-5.c /*字符串的輸出*/
(7)f格式符,用來輸出實數(包括單、雙精度),以小數形式輸出。格式:%f,%m.nf,%-m.nf都可。
注意:單精度實數的有效位數一般爲7位,雙精度爲16位。
參見:li4-6.c/*輸出單精度實數時的有效位數*/
li4-7.c/*輸出雙精度實數時的有效位數*/
li4-8.c/*輸出實數時指定小數位數*/
(8)e(或E)格式符,以指數形式輸出實數。格式:%e,%m.ne,%-m.ne都可。
(9)g(或G)格式符,用來輸出實數,它根據數值的大小,自動選f格式或e格式(選擇輸出時佔寬度較小的一種)。
3.說明
(1)除了X、E、G(用大寫字母表示)外,其他格式字符必須用小寫字母;
(2)“格式控制”字符串內可以包含轉義字符;
(3)如果想輸出字符“%”,則應該在“格式控制”字符串中用連續兩個%表示,如:
printf("%f%%",1.0/3);
(4)格式字符表參見下表
表4.1 printf格式字符
格式字符 說 明
d,i 以帶符號的十進制形式輸出整數(正數不輸出符號)
o 以八進制無符號形式輸出整數(不輸出前導符0)
x,X 以十六進制無符號形式輸出整數(不輸出前導符0x),用x則輸出十六進制數的a~f時以小寫形式輸出,用X時,則以大寫字母輸出
u 以無符號十進制形式輸出整數
c 以字符形式輸出,只輸出一個字符
s 輸出字符串
f 以小數形式輸出單、雙精度數,隱含輸出6位小數
e,E 以指數形式輸出實數
g,G 選用%f或%e格式中輸出寬度較短的一種格式,不輸出無意義的0
表4.2 printf的附加格式說明字符
字符
說明
字母l
用於長整型整數,可加在格式符d、o、x、u前面
m(代表一個正整數)
數據最小寬度
n(代表一個正整數)
對實數,表示輸出n位小數;對字符串,表示截取的字符個數
-
輸出的數字或字符在域內向左靠