![16d13c2cffbb6198dc906ac74447cb73.png](https://i-blog.csdnimg.cn/blog_migrate/b4850043dc099f68fab9178e49eb5d19.jpeg)
一、函数
printf()函数是格式化输出函数,一般用于向标准输出设备按规定格式输出信息。在编写程序时经常会用到此函数。
函数的原型为:
int
函数返回值为整型。若成功返回输出的字符数,输出出错则返回负值。
函数的调用格式为:
printf(“<格式化字符串>”, <参量表>);
其中格式化字符串包括两部分内容:一部分是正常字符,这些字符将按照原样输出;另一部分是格式化规定字符,以“%”开始,后跟一个或几个规定字符,用来确定输出内容格式。
参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个数一样多,各参数之间用“,”分开,且顺序一一对应,否则将会出行意想不到的错误。
二、Format
format,包含了要被写入到标准输出stdout的文本。它可以包含嵌入式的format标签,format标签可被随后的附加参数中指定的值替换,并按需求进行格式化。format标签属性是%[flags][width][.precision][length]specifier。
1. specifier(说明符)
- %i、d 十进制有符号整数(整数不输出符号);
- %u 十进制无符号整数;
- %o 无符号以八进制表示的整数(不输出前缀0);
- %x、%X 无符号以十六进制表示的整数(不输出前缀Ox);
- %f 十进制浮点数;
- %a、A 以十六进制表示的浮点数(C99)
- %e、%E 以十进制指数形式表示的浮点数;
- %g、%G 把输出的值按照%e或者%f类型中输出长度较小的方式输出;
- %c 单个字符;
- %s 字符串;
- %n 返回对函数的此调用迄今为止写入的字符数;
- %p 指针的值;
- %% %符号。
2. flags(标识)
- - 在给定的字段宽度内左对齐,默认是右对齐。
- + 强制在结果之前显示加号或减号(“+”或“-”),即正数前面会显示“+”号,默认情况下只有负数前面会显示一个“-”号。
- 空格 如果没有写入任何字符,则在该值前面插入一个空格。
- # 与o、x或X说明符一起使用时,非零值前面会分别显示0、0x或0X;与e、E和f一起使用时,会强制输出包含一个小数点,即使后边没有数字是也会显示小数点,默认情况下,如果后边没有数字时,不会显示小数点;与g或G一起使用时,结果与使用e或E时相同,但是尾部的零不会被移除。
- 0 在指定填充padding的数字左边放置零,而不是空格。
3. width(宽度)
- (number) 要输出的字符的最小数目,如果输出的值短于该数,结果会用空格填充,如果输出的值长于该数,结果不会被截断;
- * 宽度在format字符串中未指定,但是会作为附加整数值参数放置于要被格式化的参数之前。
4. .precision(精度)
- .number 对于整数说明符(的d、i、o、u、x、X),precision指定了要写入的数字的最小位数,如果写入的值短于该数,结果会用前导零来填充,如果写入的值长于该数,结果不会被截断。精度为0意味着不写入任何字符。
对于e、E和f说明符,要在小数点后输出的小数位数。
对于g和G说明符:要输出的最大有效位数。
对于s:要输出的最大字符数。默认情况下,所有字符都会被输出,直到遇到末尾的空字符。
对于c类型:没有任何影响。
当未指定任何精度时,默认为1,如果指定时不带有一个显示值,则假定为0。
- ·* 精度在format字符串中未指定,但是会作为附加整数值参数放置于要被格式化的参数之前。
5. length(长度)
- hh 将相应的参数按照signed char或unsigned char类型输出(仅适用于整数说明符:i、d、o、u、x、X和n,C99);
- h 将相应的参数按照short或unsigned short类型输出(仅适用于整数说明符:i、d、o、u、x、X和n);
- l 参数被解释为long或unsigned long,适用于整数说明符(i、d、o、u、x和X)及说明符c(表示一个宽字符)和s(表示宽字符字符串),将相应参数按double类型输出(仅适用于浮点数说明符:e、E、f、g和G,C99);
- ll 将相应的参数按long long或unsigned long long类型输出(仅适用于整数说明符:i、d、o、u、x、X和n,C99);
- L 参数被解释为long double(仅适用于浮点数说明符:e、E、f、g和G)。
- j 将相应的参数按照intmax_t或unsigned intmax_t类型输出(仅适用于整数说明符:i、d、o、u、x、X和n,C99);
- z 将相应的参数按照size_t或size_t类型输出(仅适用于整数说明符:i、d、o、u、x、X和n,C99);
- t 将相应的参数按照ptrdiff_t或ptrdiff_t无符号版本类型输出(仅适用于整数说明符:i、d、o、u、x、X和n,C99)。
#include
运行结果:
![1bbf8ae507f63f23051cb774ecb50b48.png](https://i-blog.csdnimg.cn/blog_migrate/6c9a35cc5cff48650f0003626a6cb0c5.jpeg)
源码地址:https://github.com/Hyacinth-fjk/CombinedLanguageIntroduction/blob/master/1.printf%E5%87%BD%E6%95%B0/printf.c