C 语言中的 printf() 格式输出
作为 C 语言中主力的标准输出函数, printf 为我们提供了丰富的格式选项。
1. 格式参数
首先列举一下 printf 全部的参数:
% [标志位] [显示占位宽度] [精度] [数字长度] 说明符
这里面用括号包裹的内容为可选参数,我们分项来介绍上面的各项参数,首先从最常用的说明符开始介绍:
说明符 | 参数含义 | 输出示例 |
---|---|---|
o | 无符号八进制数 | 410 |
x | 无符号十六进制数 | 7ff |
X | 无符号十六进制数(表示数字的字母部分大写) | 7FF |
d 或者 i | 有符号十进制整数 | -3245 |
u | 无符号十进制整数 | 3421 |
f 或者 F | 十进制浮点数 | 3.14 |
e | 科学计数法 表示指数的e小写 | 3.142333e+2 |
E | 科学计数法 表示指数的e小写 | 3.142333E+2 |
g | 在 %e 和 %f 格式中,自动选择最短的输出格式 | 3.14 |
G | 在 %E 和 %F 格式中,自动选择最短的输出格式 | 3.14 |
c | 字符 | h |
s | 字符串 | hello |
p | 指针地址 | 8ffff |
接下来是标志位的介绍。
标志位 | 参数含义 |
---|---|
- | 向左对齐,默认是向右对齐 |
+ | 强制显示正负号,在默认情况下对于只有负数的时候才显示负号 |
再下来介绍宽度参数:
宽度 | 参数含义 |
---|---|
(数字) | 显示的最小宽度。如果要显示的内容达不到最小宽度数值,那么用空格补齐。 |
然后介绍显示精度的参数。
精度 | 参数含义 |
---|---|
(数字) | 最小精度的数值 |
最后的数字的长度的问题比较复杂,所以通过对比表格展示了参数使用前后的区别。表格第一行表示不使用参数的情况下的显示。
数字长度 | d i | u o x X | f F e E g G | c | s |
---|---|---|---|---|---|
(none) | int | unsigned int | double | int | char* |
hh | signed char | unsigned char | |||
h | short int | unsigned short int | |||
l | long int | unsigned long int | wint_t | wchar_t* | |
ll | long long int | unsigned long long int | |||
j | intmax_t | uintmax_t | |||
z | size_t | size_t | |||
t | ptrdiff_t | ptrdiff_t |
2. 实例参考
下面我们来看下 printf() 函数的具体使用:
#include <stdio.h>
int main()
{
printf ("Characters: %c \n", 'a');
printf ("Decimals: %d %+ld\n", -1977, 650000L);
printf ("Preceding with blanks: %10d \n", 1977);
printf ("Preceding with zeros: %010d \n", 1977);
printf ("Some different radices: %d %x %o %#x %#o \n", 100, 100, 100, 100, 100);
printf ("floats: %4.2f %+.0e %E \n", 3.1415, 3.1415, 3.1415);
printf ("%s \n", "A string");
return 0;
}
显示效果:
Characters: a
Decimals: -1977 +650000
Preceding with blanks: 1977
Preceding with zeros: 0000001977
Some different radices: 100 64 144 0x64 0144
floats: 3.14 +3e+00 3.141500E+00
A string
3. 小结
对于 printf 函数, C 语言中提供了非常多的显示格式的选项,以方便大家用来与用户进行交互使用。
这里里面的必选项是说明符,也就是说明你要是显示的数据的类型。而诸如标志位,显示占位符,显示数字的精度,数字的长度等参数都是可选参数,根据你要显示的需求和显示的屏幕的情况来自己选择。
还有一点请记住,在使用这个函数的时候,不要忘记引用这个函数所在的程序库,也就是 #include <stdio.h>
,要添加在程序的起始位置上。