C 語(yǔ)言中的 printf() 格式輸出
作為 C 語(yǔ)言中主力的標(biāo)準(zhǔn)輸出函數(shù), printf 為我們提供了豐富的格式選項(xiàng)。
1. 格式參數(shù)
首先列舉一下 printf 全部的參數(shù):
% [標(biāo)志位] [顯示占位寬度] [精度] [數(shù)字長(zhǎng)度] 說(shuō)明符
這里面用括號(hào)包裹的內(nèi)容為可選參數(shù),我們分項(xiàng)來(lái)介紹上面的各項(xiàng)參數(shù),首先從最常用的說(shuō)明符開始介紹:
說(shuō)明符 | 參數(shù)含義 | 輸出示例 |
---|---|---|
o | 無(wú)符號(hào)八進(jìn)制數(shù) | 410 |
x | 無(wú)符號(hào)十六進(jìn)制數(shù) | 7ff |
X | 無(wú)符號(hào)十六進(jìn)制數(shù)(表示數(shù)字的字母部分大寫) | 7FF |
d 或者 i | 有符號(hào)十進(jìn)制整數(shù) | -3245 |
u | 無(wú)符號(hào)十進(jìn)制整數(shù) | 3421 |
f 或者 F | 十進(jìn)制浮點(diǎn)數(shù) | 3.14 |
e | 科學(xué)計(jì)數(shù)法 表示指數(shù)的e小寫 | 3.142333e+2 |
E | 科學(xué)計(jì)數(shù)法 表示指數(shù)的e小寫 | 3.142333E+2 |
g | 在 %e 和 %f 格式中,自動(dòng)選擇最短的輸出格式 | 3.14 |
G | 在 %E 和 %F 格式中,自動(dòng)選擇最短的輸出格式 | 3.14 |
c | 字符 | h |
s | 字符串 | hello |
p | 指針地址 | 8ffff |
接下來(lái)是標(biāo)志位的介紹。
標(biāo)志位 | 參數(shù)含義 |
---|---|
- | 向左對(duì)齊,默認(rèn)是向右對(duì)齊 |
+ | 強(qiáng)制顯示正負(fù)號(hào),在默認(rèn)情況下對(duì)于只有負(fù)數(shù)的時(shí)候才顯示負(fù)號(hào) |
再下來(lái)介紹寬度參數(shù):
寬度 | 參數(shù)含義 |
---|---|
(數(shù)字) | 顯示的最小寬度。如果要顯示的內(nèi)容達(dá)不到最小寬度數(shù)值,那么用空格補(bǔ)齊。 |
然后介紹顯示精度的參數(shù)。
精度 | 參數(shù)含義 |
---|---|
(數(shù)字) | 最小精度的數(shù)值 |
最后的數(shù)字的長(zhǎng)度的問(wèn)題比較復(fù)雜,所以通過(guò)對(duì)比表格展示了參數(shù)使用前后的區(qū)別。表格第一行表示不使用參數(shù)的情況下的顯示。
數(shù)字長(zhǎng)度 | d i | u o x X | f F e E g G | c | s |
---|---|---|---|---|---|
(none) | int | unsigned int | double | int | char* |
hh | signed char | unsigned char | |||
h | short int | unsigned short int | |||
l | long int | unsigned long int | wint_t | wchar_t* | |
ll | long long int | unsigned long long int | |||
j | intmax_t | uintmax_t | |||
z | size_t | size_t | |||
t | ptrdiff_t | ptrdiff_t |
2. 實(shí)例參考
下面我們來(lái)看下 printf() 函數(shù)的具體使用:
#include <stdio.h>
int main()
{
printf ("Characters: %c \n", 'a');
printf ("Decimals: %d %+ld\n", -1977, 650000L);
printf ("Preceding with blanks: %10d \n", 1977);
printf ("Preceding with zeros: %010d \n", 1977);
printf ("Some different radices: %d %x %o %#x %#o \n", 100, 100, 100, 100, 100);
printf ("floats: %4.2f %+.0e %E \n", 3.1415, 3.1415, 3.1415);
printf ("%s \n", "A string");
return 0;
}
顯示效果:
Characters: a
Decimals: -1977 +650000
Preceding with blanks: 1977
Preceding with zeros: 0000001977
Some different radices: 100 64 144 0x64 0144
floats: 3.14 +3e+00 3.141500E+00
A string
3. 小結(jié)
對(duì)于 printf 函數(shù), C 語(yǔ)言中提供了非常多的顯示格式的選項(xiàng),以方便大家用來(lái)與用戶進(jìn)行交互使用。
這里里面的必選項(xiàng)是說(shuō)明符,也就是說(shuō)明你要是顯示的數(shù)據(jù)的類型。而諸如標(biāo)志位,顯示占位符,顯示數(shù)字的精度,數(shù)字的長(zhǎng)度等參數(shù)都是可選參數(shù),根據(jù)你要顯示的需求和顯示的屏幕的情況來(lái)自己選擇。
還有一點(diǎn)請(qǐng)記住,在使用這個(gè)函數(shù)的時(shí)候,不要忘記引用這個(gè)函數(shù)所在的程序庫(kù),也就是 #include <stdio.h>
,要添加在程序的起始位置上。