您的位置:首页 > 编程语言 > C语言/C++

C语言:printf的格式字符串

2012-03-14 22:25 295 查看
printf的格式字符串 %[标记] [ [ * ] [数据宽度] ] [.精确度]类型

+

-

0

#

最小宽度

精确度

类型

显示符号

左对齐

(默认右对齐)

数据前填0

(右对齐时)

8进制加0

16进制加0x

10进制整数

或者*

例如.2

-

Y

-

-

Y

-

c

-

Y

-

-

Y

-

s

Y

Y

Y

-

Y

-

di

-

Y

Y

-

Y

-

u

-

Y

Y

Y

Y

-

o

-

Y

Y

Y

Y

-

x

Y

Y

Y

-

Y

Y

fega

-表示该类型不需要这个选项

从上表看出只有数据宽度和对齐才是所有类型都支持的格式,指定宽度时默认右对齐

只有在指定最小宽度时,我们才能使用-,0标志,这个时候的对齐和填充才有意义,实际上只要指定最小宽度,且数据不足这个宽度就一定会发生填充,以空白字符或者填充在数据前部或者填充在数据后部(视对齐情况而定)而0则是特指用0填充在数据前方,这样做是为了让数据对齐显得好看,需要说明的是虽然很多类型支持左对齐和填充0,但是实际上这两个选项是冲突的,左对齐就不可能填充0,填充0就不可能左对齐,左对齐的意思是说以空白符在数据之后进行填充

一些例子

"%12d" 数据宽度最少占12个字符宽,如数据不足12个字符则数据右对齐

"%+-12d" 12d含义同上,不同之处在于打印符号,数据左对齐

"%#x" 数据3A打印成0X3a

"%.4f" 数据保留小数点后4位的精度

实际上printf的格式字符串和sprintf是相同的

char buffer[100];

sprintf(buffer,"%10d",12);

printf("the string is %d bytes\n",strlen(buffer));

输出the string is 10 bytes
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: