久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

printf函數(shù)族詳解

 guoliangyu 2012-09-20

printf 家族

printf函數(shù)家族用于創(chuàng)建格式化的輸出,。標(biāo)準(zhǔn): [1] 7.19.6.1

Tip

printf函數(shù)家族的格式代碼和scanf函數(shù)家族的格式代碼用法不同,。所以必須小心謹(jǐn)慎,防止誤用,。 兩者的格式代碼中的有些可選字段看上去是相同的,,這使得問(wèn)題變得更為困難。 《C和指針》

函數(shù)成員

printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf, vsnprintf,

wprintf, fwprintf, swprintf, vwprintf, vfwprintf, vswprintf,

格式代碼

%[flags] [width] [.precision] [{hh | h | l | ll | j | z | t | L}]type

格式代碼由一個(gè)百分號(hào)開(kāi)頭,,后面跟 [2]

  1. 零個(gè)或者多個(gè) 標(biāo)志字符[flags],用于修改有些轉(zhuǎn)換的執(zhí)行方式 [3]
  2. 一個(gè)可選的 最小字段寬度[width] [5]
  3. 一個(gè)可選的 精度[.precision] [4]
  4. 一個(gè)可選的 修改符[{hh | h | l | ll | j | z | t | L}] [6]
  5. 轉(zhuǎn)換類(lèi)型 type [7]

轉(zhuǎn)換類(lèi)型 type

Character Type Output format
c,C int 用于printf時(shí),為單字節(jié);用于wprintf時(shí),為寬字節(jié).
d,i int 有符號(hào)十進(jìn)制數(shù).
u,o,x,X unsigned 無(wú)符號(hào)數(shù)值. 十進(jìn)制:u; 八進(jìn)制:o; 十六進(jìn)制:x,X, 兩者區(qū)別, x是abcdef, X使用ABCDEF.
e,E double 指數(shù)形式輸出.如:6.023000e23是使用e;6.023000E23是使用E. 小數(shù)點(diǎn)后面的位數(shù)由精度字段決定,默認(rèn)為6
f,F double 常規(guī)浮點(diǎn)數(shù)格式輸出.如:[–]dddd.dddd. 小數(shù)點(diǎn)后面的位數(shù)由精度字段決定,默認(rèn)為6
g,G double 自動(dòng)選擇使用%f,%e,%E. 如果指數(shù)大于等于-4但小于精度字段使用%f,否則使用%e(g->e, G->E)
a,A double 有符號(hào)的十六進(jìn)制雙精度浮點(diǎn)值[?]0xh.hhhh p±dd, 其中h.hhhh為十六進(jìn)制的尾數(shù), dd為指數(shù)
s char* 用于printf時(shí),為單字節(jié)字符串;用于wprintf時(shí),為寬字節(jié)字符串. 長(zhǎng)度為字符串長(zhǎng)度或者精度.(wcrtomb轉(zhuǎn)碼)
S char* 用于printf時(shí),為寬字節(jié)字符串;用于wprintf時(shí),為單字節(jié)字符串. 長(zhǎng)度為字符串長(zhǎng)度或者精度.(VS)
P void* 指針值轉(zhuǎn)換為因編譯器而異的可打印字符.(VS:十六進(jìn)制數(shù)字)
n int* 無(wú)輸出,,返回到目前為止函數(shù)所產(chǎn)生的的輸出字符數(shù)保存在該指針?biāo)赶虻膬?nèi)存中(VS中默認(rèn)禁用,使用_set_printf_count_output(1)開(kāi)啟)
%   輸出一個(gè)%字符
hs 在用于wprintf時(shí),存在字符集問(wèn)題,。

VS需要設(shè)置 setlocale(LC_ALL, “”);

GCC需要設(shè)置編譯參數(shù) gcc Test.cpp -finput-charset=gbk

setlocale(LC_ALL, "");

wprintf(L"%hs \n", "abc");
wprintf(L"%hs \n", "陳");

格式標(biāo)志[flags]

Flag Meaning Default
- 值在字段中左對(duì)齊 右對(duì)齊
+ 對(duì)于格式化有符號(hào)的值時(shí),對(duì)于非負(fù)值,強(qiáng)制加正號(hào) 非負(fù)值,不顯示正號(hào)
0 當(dāng)數(shù)值為右對(duì)齊時(shí),用0填充未使用的列 用空格填充
空格 當(dāng)有符號(hào)的數(shù)值為非負(fù)時(shí),在其開(kāi)始位置添加一個(gè)空格 不添加空格
# 選擇某些類(lèi)型的另一種轉(zhuǎn)換形式(見(jiàn)下表)  
0標(biāo)志
可用于 d,iu,o,x,X,E,f,g,G ,。使用 d,i,u,o,x,X 類(lèi)型(type)時(shí),如果給出了精度(如:%04.d),,0標(biāo)志就被忽略,。 如果代碼中出現(xiàn)了負(fù)號(hào)標(biāo)志,0標(biāo)志也沒(méi)有效果
空格標(biāo)志
和正號(hào)標(biāo)志是互斥的,,如果兩個(gè)同時(shí)給出,,空格標(biāo)志將被忽略。
用于.. #標(biāo)志
o 保證產(chǎn)生的值以一個(gè)零開(kāi)頭
x,X 在非零值前面加0x前綴(%X則為0X)
e,E,f,(a,A) 確保結(jié)果始終包含一個(gè)小數(shù)點(diǎn),,即使他后面沒(méi)有數(shù)字
g,G 和上面的e,E,f相同,。另外,綴尾的0并不從小數(shù)中去除
c,d,i,u,s 忽略該標(biāo)志

字段寬度[width]

字符寬度是一個(gè)十進(jìn)制數(shù),用于指定將出現(xiàn)在結(jié)果中的 最小 字符數(shù).如果值得字符數(shù)少于字段寬度,就會(huì)對(duì)它填充以增加長(zhǎng)度. flags決定填充是用空白字符還是零以及它出現(xiàn)在值的左邊還是右邊.

字段精度[.precision]

精度已一個(gè) 句點(diǎn)(.) 開(kāi)頭,后面是一個(gè)可選的十進(jìn)制整數(shù). 如果未給出整數(shù),精度缺省值為零

對(duì)于d,u,u,o,x,X類(lèi)型的轉(zhuǎn)換,精度字段制定將出現(xiàn)在結(jié)果中的 最小數(shù)字的個(gè)數(shù) 并覆蓋零標(biāo)志. 如果轉(zhuǎn)換后的值的位數(shù)小于寬度,就在它的前面插入零. 如果值為零且精度也為零,則轉(zhuǎn)換結(jié)果就不會(huì)產(chǎn)生數(shù)字.

對(duì)于e,E,f類(lèi)型的轉(zhuǎn)換,精度決定將出現(xiàn)在 小數(shù)點(diǎn)之后的數(shù)字位數(shù) .

對(duì)于g,G類(lèi)型的轉(zhuǎn)換,它制定將出現(xiàn)在結(jié)果中的 最大 有效位數(shù).

當(dāng)使用s類(lèi)型轉(zhuǎn)換時(shí),精度指定將被轉(zhuǎn)換的 最多 的字符數(shù).

Tip

如果用于表示字段寬度 和/或 精度的十進(jìn)制整數(shù)由一個(gè) 星號(hào)(*) 代替, 那么printf的下一個(gè)參數(shù)(必須是個(gè)整數(shù))就提供寬度 和/或 精度. 因此這些值可以通過(guò)計(jì)算活動(dòng)而不必預(yù)先設(shè)定.

printf("%.*s \n", 3, "abcdef"); // abc  (相當(dāng)于%.3s)
printf("%0*s \n", 5, "abc"); // 00abc  (相當(dāng)于%05s)
printf("%0*.*s \n", 5, 3, "abcdef"); // 00abc  (相當(dāng)于%05.3s)

修改符[{hh | h | l | ll | j | z | t | L}]

C99

To specify Use prefix With type specifier Compiler
signed char hh d, i, o, x, or X GCC
unsigned char hh o, u, x, or X GCC
short int h d, i, o, x, or X GCC VS
unsigned short int h o, u, x, or X GCC VS
long int l (lowercase L) d, i, o, x, or X  
unsigned long int l o, u, x, or X  
wint_t l c  
wchar_t l s  
long long int ll d, i, o, x, or X  
unsigned long long int l o, u, x, or X  
long double l or L a, A, e, E, f, f, g, or G  
l
修改符 對(duì) a, A, e, E, f, F, g,or G 類(lèi)型 無(wú)效,。
j (GCC)
Speci?es that a following d, i, o, u, x,or X conversion speci?er applies to an intmax_t or uintmax_t argument; or that a following n conversion speci?er applies to a pointer to an intmax_t argument. 表明接下來(lái)的d,i,o,u,x或X轉(zhuǎn)換說(shuō)明符會(huì)應(yīng)用于intmax_t或uintmax_t參數(shù),, 或者表明接下來(lái)的轉(zhuǎn)換說(shuō)明符n會(huì)應(yīng)用于一個(gè)只想intmax_t參數(shù)的指針
z (GCC)
Speci?es that a following d, i, o, u, x,or X conversion speci?er applies to a size_t or the corresponding signed integer type argument; or that a following n conversion speci?er applies to a pointer to a signed integer type corresponding to size_t argument. 表明接下來(lái)的轉(zhuǎn)換說(shuō)明符d,i,o,,u,x或X會(huì)應(yīng)用于一個(gè)size_t或?qū)?yīng)的有符號(hào)整數(shù)類(lèi)型的參數(shù); 或者表明接下來(lái)的轉(zhuǎn)換說(shuō)明符n會(huì)應(yīng)用于一個(gè)指針,該指針指向一個(gè)對(duì)應(yīng)于size_t類(lèi)型的參數(shù)的有符號(hào)整數(shù)類(lèi)型
t (GCC)
Speci?es that a following d, i, o, u, x,or X conversion speci?er applies to a ptrdiff_t or the corresponding unsigned integer type argument; or that a following n conversion speci?er applies to a pointer to a ptrdiff_t argument. 表明接下來(lái)的轉(zhuǎn)換說(shuō)明符d,i,o,,u,x或X會(huì)應(yīng)用于ptrdiff_t或相應(yīng)的無(wú)符號(hào)整數(shù)類(lèi)型的參數(shù),; 或者表明接下來(lái)的n會(huì)應(yīng)用于一個(gè)指向ptrdiff_t類(lèi)型的參數(shù)的指針

MS VC++

數(shù)值類(lèi)型
To specify Use prefix With type specifier
long int l (lowercase L) d, i, o, x, or X
long unsigned int l o, u, x, or X
long long ll d, i, o, x, or X
short int h d, i, o, x, or X
short unsigned int h o, u, x, or X
__int32 I32 d, i, o, x, or X
unsigned __int32 I32 o, u, x, or X
__int64 I64 d, i, o, x, or X
unsigned __int64 I64 o, u, x, or X
ptrdiff_t I d, i, o, x, or X
size_t I o, u, x, or X
long double l or L f
ptrdiff_t
(that is, __int32 on 32-bit platforms, __int64 on 64-bit platforms)
size_t
(that is, unsigned __int32 on 32-bit platforms, unsigned __int64 on 64-bit platforms)
字符類(lèi)型
To specify Use prefix With type specifier
Single-byte character with printf functions h c or C
Single-byte character with wprintf functions h c or C
Wide character with printf functions l c or C
Wide character with wprintf functions l c or C
Single-byte – character string with printf functions h s or S
Single-byte – character string with wprintf functions h s or S
Wide-character string with printf functions l s or S
Wide-character string with wprintf functions l s or S
Wide character w c
Wide-character string w s
字符類(lèi)型等同于
To print character as Use function With format specifier
single byte printf c, hc, or hC
single byte wprintf C, hc, or hC
wide wprintf c, lc, lC, or wc
wide printf C, lc, lC, or wc

參考資料

[1] http://www./jtc1/sc22/wg14/www/docs/C99RationaleV5.10.pdf
[2] http://msdn.microsoft.com/en-us/library/56e442dc(v=vs.80).aspx
[3] http://msdn.microsoft.com/en-us/library/8aky45ct(v=vs.80).aspx
[4] http://msdn.microsoft.com/en-us/library/0ecbz014(v=vs.80).aspx
[5] http://msdn.microsoft.com/en-us/library/25366k66(v=vs.80).aspx
[6] http://msdn.microsoft.com/en-us/library/tcxf1dw6(v=vs.80).aspx
[flasht,600,500,10,20]http://www./Upload/2005-08/200552717232219600.swf ­[/flasht] ­
 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買(mǎi)等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多