printf()函数不仅可以将数据输出到控制台,还可以通过格式化字符串灵活地控制输出的格式。printf()函数的使用规则,包括标志说明、字段宽度、转换精度、长度修饰、转换说明、转义字符和返回结果等内容。

printf()函数概述printf()函数是C语言标准库中的一个格式化输出函数,定义在<stdio.h>头文件中。它的基本语法如下:
int printf(const char *format, ...);format:格式化字符串,用于指定输出的格式。...:可变参数列表,用于提供要输出的数据。#include <stdio.h>
int main() {
int num = 42;
printf("The answer is %d\n", num);
return 0;
}输出:
The answer is 42格式化字符串是printf()函数的核心,它由普通字符和格式说明符组成。格式说明符以%开头,用于指定输出的格式。
标志用于控制输出的对齐方式、符号显示等。常见的标志包括:
-:左对齐(默认右对齐)。+:显示正数的符号。(空格):正数前显示空格,负数前显示负号。#:对八进制和十六进制数添加前缀(0或0x)。0:用前导零填充字段宽度。#include <stdio.h>
int main() {
int num = 42;
printf("|%10d|\n", num); // 右对齐,宽度10
printf("|%-10d|\n", num); // 左对齐,宽度10
printf("|%+d|\n", num); // 显示符号
printf("|% d|\n", num); // 正数前显示空格
printf("|%#x|\n", num); // 十六进制带前缀
printf("|%010d|\n", num); // 前导零填充
return 0;
}输出:
| 42|
|42 |
|+42|
| 42|
|0x2a|
|0000000042|字段宽度用于指定输出的最小字符数。如果数据的实际宽度小于指定宽度,则用空格或前导零填充。
#include <stdio.h>
int main() {
int num = 42;
printf("|%5d|\n", num); // 宽度5
printf("|%2d|\n", num); // 宽度2(实际宽度大于指定宽度)
return 0;
}输出:
| 42|
|42|转换精度用于指定浮点数的小数位数或字符串的最大字符数。精度以.开头,后跟一个整数。
#include <stdio.h>
int main() {
double pi = 3.1415926535;
printf("|%.2f|\n", pi); // 保留2位小数
printf("|%.5s|\n", "Hello, World!"); // 输出前5个字符
return 0;
}输出:
|3.14|
|Hello|长度修饰用于指定参数的类型。常见的长度修饰符包括:
h:短整型(如%hd表示short int)。l:长整型(如%ld表示long int)。ll:长长整型(如%lld表示long long int)。L:长双精度浮点型(如%Lf表示long double)。#include <stdio.h>
int main() {
short num1 = 42;
long num2 = 1234567890;
long double pi = 3.1415926535;
printf("|%hd|\n", num1); // 短整型
printf("|%ld|\n", num2); // 长整型
printf("|%.10Lf|\n", pi); // 长双精度浮点型
return 0;
}输出:
|42|
|1234567890|
|3.1415926535|转换说明符用于指定输出的数据类型。常见的转换说明符包括:
d、i:有符号十进制整数。u:无符号十进制整数。o:无符号八进制整数。x、X:无符号十六进制整数(x表示小写,X表示大写)。f、F:浮点数。e、E:科学计数法表示的浮点数。g、G:根据值的不同自动选择f或e格式。c:字符。s:字符串。p:指针地址。#include <stdio.h>
int main() {
int num = 42;
double pi = 3.1415926535;
char ch = 'A';
char str[] = "Hello, World!";
printf("|%d|\n", num); // 十进制整数
printf("|%x|\n", num); // 十六进制整数(小写)
printf("|%f|\n", pi); // 浮点数
printf("|%e|\n", pi); // 科学计数法
printf("|%c|\n", ch); // 字符
printf("|%s|\n", str); // 字符串
printf("|%p|\n", &num); // 指针地址
return 0;
}输出:
|42|
|2a|
|3.141593|
|3.141593e+00|
|A|
|Hello, World!|
|0x7ffee4b5c8fc|转义字符用于表示特殊字符或控制输出格式。常见的转义字符包括:
\n:换行。\t:制表符。\\:反斜杠。\":双引号。\':单引号。#include <stdio.h>
int main() {
printf("Hello,\nWorld!\n"); // 换行
printf("Column1\tColumn2\n"); // 制表符
printf("This is a backslash: \\\n"); // 反斜杠
printf("He said, \"Hello!\"\n"); // 双引号
return 0;
}输出:
Hello,
World!
Column1 Column2
This is a backslash: \
He said, "Hello!"printf()函数返回成功输出的字符数。如果发生错误,则返回负值。
#include <stdio.h>
int main() {
int count = printf("Hello, World!\n");
printf("Characters printed: %d\n", count);
return 0;
}输出:
Hello, World!
Characters printed: 14