其函数原型为:int printf(const char *format, ...);
其函数返回值:打印出的字符格式
其调用格式为:printf("<格式化字符串>", <参量表>);
(2)转换说明:
转换格式为:%[标志][宽度][.精度][类型长度]类型
除了最后的类型之外都是可选的字段
项目是左对齐的;也就是说,会把项目打印在字段的左侧开始处。示例:"%-20s"
有符号的值若为正,则显示带加号的符号;若为负,则带减号的符号。示例:"%+6.2f"
带符号的值若为正,则显示时带前导空格(但是不显示符号);若为负,则带减号符号。+标志会覆盖空格标志;示例:"% 6.2f"
使用转换说明的可选形式。若为%o格式,则以0开始;若为%x或%X格式,则以0x或0X开始。对于所有的浮点形式,#保证了即使不跟任何数字,也打印一个小数点符号。对于%g和%G格式,它防止尾随0被删除;示例:"%#o"
对于所有的数字格式,用前导0而不是用空格填充字段。如果出现-标志或者指定了精度(对于整数)则忽略该标志;示例:"%010d"
3
int
main() {
4
const
char
* pString =
"
Hello World
"
;
5
const
int
nNumber =
1024
;
6
const
double
dNumber =
3.141593
;
7
//
%d 示例
8
printf(
"
*%d*\n
"
, nNumber);
//
输出:*1024*
9
printf(
"
*%6d*\n
"
, nNumber);
//
输出:* 1024*
10
printf(
"
*%6.5d*\n
"
, nNumber);
//
输出:* 01024*
11
printf(
"
*%-6.5d*\n
"
, nNumber);
//
输出:*01024 *
12
printf(
"
*%06d*\n
"
, nNumber);
//
输出:*001024*
13
printf(
"
*%+6d*\n
"
, nNumber);
//
输出:* +1024*
15
//
%f 示例
16
printf(
"
*%f*\n
"
, dNumber);
//
输出:*3.141593*
17
printf(
"
*%10f*\n
"
, dNumber);
//
输出:* 3.141593*
18
printf(
"
*%10.2f*\n
"
, dNumber);
//
输出:* 3.14*
19
printf(
"
*%-10.2f*\n
"
, dNumber);
//
输出:*3.14 *
20
printf(
"
*%+10.2f*\n
"
, dNumber);
//
输出:* +3.14*
21
printf(
"
*%010.2f*\n
"
, dNumber);
//
输出:*0000003.14*
23
//
%s 示例
24
printf(
"
*%s*\n
"
, pString);
//
输出:*Hello World*
25
printf(
"
*%20s*\n
"
, pString);
//
输出:* Hello World*
26
printf(
"
*%-20s*\n
"
, pString);
//
输出:*Hello World *
27
printf(
"
*%.10s*\n
"
, pString);
//
输出:*Hello Worl*
28
return
0
;
(4)浮点参数的转换:
有用于打印浮点类型double和long double的转换说明符,但没有用于float的说明符。原因是在K&R C中float值在被用于表达式中或者被用作参数之前,会被自动转换成double类型。一般情况下,ANSI C不会自动把float转换成double。不过,为了保护大量现有的假设float参数仍会自动被转换成double。因此,不过是K&R C还是ANSI C,都无需专门的转换说明符来显示float。