printf是C语言标准库中的输出函数,主要用于将格式化的数据输出到标准输出设备,比如终端屏幕。它的核心作用是通过格式控制字符串来指定输出内容的样式、类型和排列规则,开发者可以根据需求灵活调整输出效果。

printf函数的基本语法格式
printf函数的基本调用格式如下:
#include <stdio.h> int printf(const char *format, ...);
其中format是格式控制字符串,后面的省略号表示可以接收零个或多个输出参数,这些参数的类型和数量需要和格式控制字符串中的格式控制符一一对应。
格式控制字符串的组成部分
格式控制字符串由两部分组成,分别是普通字符和格式控制符:
- 普通字符:会按照原样输出到屏幕,比如字符串、标点、空格等。
- 格式控制符:以
%开头,用来指定对应输出参数的类型和输出格式,会被对应参数的值替换。
常用格式控制符说明
下面是常用的格式控制符及其作用:
| 格式控制符 | 作用说明 |
|---|---|
| %d / %i | 输出有符号十进制整数 |
| %u | 输出无符号十进制整数 |
| %f | 输出十进制浮点数,默认保留6位小数 |
| %c | 输出单个字符 |
| %s | 输出字符串 |
| %x / %X | 输出无符号十六进制整数,x对应小写,X对应大写 |
| %o | 输出无符号八进制整数 |
| %p | 输出指针地址 |
格式控制符的附加修饰符
除了基本的格式控制符,还可以在%和格式字符之间添加修饰符,进一步控制输出的宽度、精度等属性:
- 数字:指定输出的最小宽度,如果输出内容长度不足,会用空格在左侧补齐。
.数字:指定浮点数的小数位数,或者字符串的最大输出长度。-:指定输出内容左对齐,默认是右对齐。0:当指定输出宽度时,用0代替空格在左侧补齐。
使用示例
下面通过几个实际的代码示例展示printf的不同使用场景:
#include <stdio.h>
int main() {
int num = 123;
float score = 95.5;
char ch = 'A';
char str[] = "Hello World";
// 基本输出示例
printf("整数:%dn", num);
printf("浮点数:%fn", score);
printf("字符:%cn", ch);
printf("字符串:%sn", str);
// 带宽度和精度控制
printf("宽度为10的整数:%10dn", num);
printf("左对齐宽度为10的整数:%-10dn", num);
printf("保留2位小数的浮点数:%.2fn", score);
printf("宽度为8,保留2位小数的浮点数:%8.2fn", score);
// 多参数输出
printf("学号:%d,成绩:%.1f,等级:%cn", 1001, 88.5, 'B');
return 0;
}
上述代码运行后,会按照指定的格式输出对应的内容,开发者可以根据实际需求调整格式控制字符串中的控制符和修饰符,得到想要的输出效果。
注意事项
- 格式控制符的数量和类型必须和后面的输出参数一一对应,否则会出现未定义行为,导致输出错误。
- 输出字符串时,对应的参数需要是字符数组的首地址或者字符串常量,不能直接传入字符类型。
- 如果要输出
%字符本身,需要在格式控制字符串中写成%%,避免被识别为格式控制符的开头。