服务端相关 / 10 C 语言中的 printf() 格式输出

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>,要添加在程序的起始位置上。