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