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 iu o x Xf F e E g Gcs
(none)intunsigned intdoubleintchar*
hhsigned charunsigned char


hshort intunsigned short int


llong intunsigned long int
wint_twchar_t*
lllong long intunsigned long long int


jintmax_tuintmax_t


zsize_tsize_t


tptrdiff_tptrdiff_t


2. 实例参考

下面我们来看下 printf() 函数的具体使用:

#include <stdio.h>int main(){
   printf ("Characters: %c \n", 'a');
   printf ("Decimals: %d %+ld\n", -, );
   printf ("Preceding with blanks: %10d \n", );
   printf ("Preceding with zeros: %010d \n", );
   printf ("Some different radices: %d %x %o %#x %#o \n", , , , , );
   printf ("floats: %4.2f %+.0e %E \n", , , );
   printf ("%s \n", "A string");
   return ;}

显示效果:

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