目录
Hello!!!我又来了,为什么这次写printf函数呢,主要是上篇写的scanf,这两个函数是一对,一个是标准输入函数,一个是标准输出函数。
printf
printf 是指格式化输出函数,主要功能是向标准输出设备按规定格式输出信息。printf 是C语言标准库函数,定义于头文件 <stdio.h>。printf 函数的一般调用格式为:printf("<格式化字符串>", <参量表>) [1] 。输出的字符串除了可以是字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义
函数原型
int printf(const char *format, ...);
printf("<格式化字符串>", <参量表>);
返回值
函数返回值为整型。若成功则返回输出的字符数,输出出错则返回负值。
功能
printf 函数在输出格式 format 的控制下,将其参数进行格式化,并在标准输出设备(显示器、控制台等)上打印出来。
参数列表
int printf(const char *format, ...);
format -- 是格式控制字符串,包含了两种类型的对象:普通字符和转换说明 。在输出时,普通字符将原样不动地复制到标准输出,转换说明并不直接输出而是用于控制 printf 中参数的转换和打印。每个转换说明都由一个百分号字符(%)开始,以转换说明结束,从而说明输出数据的类型、宽度、精度等
%[flags][width][.precision][length]specifier,即:%[标志][最小宽度][.精度][类型长度]说明符
说明符 (specifier)
d / i
int
输出类型为有符号的十进制整数,i 是老式写法
o
unsigned int
输出类型为无符号八进制整数(没有前导 0)
u
unsigned int
输出类型为无符号十进制整数
x / X
unsigned int
输出类型为无符号十六进制整数,x 对应的是 abcdef,X 对应的是 ABCDEF(没有前导 0x 或者 0X)
f / lf
double
输出类型为十进制表示的浮点数,默认精度为6(lf 在 C99 开始加入标准,意思和 f 相同)
e / E
double
输出类型为科学计数法表示的数,此处 "e" 的大小写代表在输出时用的 “e” 的大小写,默认浮点数精度为6
g
double
G
double
根据数值不同自动选择 %f 或 %E,%E 格式在指数小于-4或指数大于等于精度时用使用
c
char
s
char *
输出类型为字符串。输出字符串中的字符直至遇到字符串中的空字符(字符串以 '\0‘ 结尾,这个 '\0' 即空字符)或者已打印了由精度指定的字符数
p
void *
以16进制形式输出指针
%
不转换参数
不进行转换,输出字符‘%’(百分号)本身
n
int *
到此字符之前为止,一共输出的字符个数,不输出文本
flag(标志)
-
减号
在给定的字段宽度内左对齐,右边填充空格(默认右对齐)
+
加号
强制在结果之前显示加号或减号(+ 或 -),即正数前面会显示 + 号;
默认情况下,只有负数前面会显示一个 - 号
(空格)
空格
#
井号
specifier 是 o、x、X 时,增加前缀 0、0x、0X;
specifier 是 e、E、f、g、G 时,一定使用小数点;
specifier 是 g、G 时,尾部的 0 保留
0
数字零
对于所有的数字格式,使用前导零填充字段宽度(如果出现了减号标志或者指定了精度,则忽略该标志)
width(最小宽度)
digit(n)
数字
字段宽度的最小值,如果输出的字段长度小于该数,结果会用前导空格填充;如果输出的字段长度大于该数,结果使用更宽的字段,不会截断输出
*
星号
宽度在 format 字符串中规定位置未指定,使用星号标识附加参数,指示下一个参数是width
.precision(精度)
digit(n)
点+数字
对于整数说明符(d、i、o、u、x、X):precision 指定了要打印的数字的最小位数。如果写入的值短于该数,结果会用前导零来填充。如果写入的值长于该数,结果不会被截断。精度为 0 意味着不写入任何字符;
对于 e、E 和 f 说明符:要在小数点后输出的小数位数;
对于 g 和 G 说明符:要输出的最大有效位数;
对于 s 说明符:要输出的最大字符数。默认情况下,所有字符都会被输出,直到遇到末尾的空字符;
对于 c 说明符:没有任何影响;
当未指定任何精度时,默认为 1。如果指定时只使用点而不带有一个显式值,则标识其后跟随一个 0。
.*
点+星号
精度在 format 字符串中规定位置未指定,使用点+星号标识附加参数,指示下一个参数是精度
length(类型长度)
h
参数被解释为短整型或无符号短整型(仅适用于整数说明符:i、d、o、u、x 和 X)
l
参数被解释为长整型或无符号长整型,适用于整数说明符(i、d、o、u、x 和 X)及说明符 c(表示一个宽字符)和 s(表示宽字符字符串)
结束语
世界上只有两句真理:1、人一定会死。
2、程序一定会有Bug。
谢谢观看!!!