由于一直以来使用的都是c++中的输出,对printf的用法并不是很熟悉,但是很多地方又会用到,所以就进行深入了解了一下。
printf()函数是格式化输出函数,一般用于向标准输出设备按规定格式输出信息。
调用格式:printf("<格式化字符串>",<参量表>)
格式化字符串用于指定输出格式。格式化字符串可由格式字符串和非格式字符串两种组成。格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。
非格式字符串原样输出,在显示中起提示作用。输出表列中给出了各个输出项,要求格式字符串和各输出项在数量和类型上应该一一对应。
功能:在C语言中产生格式化输出的函数(定义在stdio.h中),向未重定向终端(显示器、控制台等)输出字符。
格式字符 | 意义 |
"%d" "i" | 按十进制形式输出带符号整数(正数不输出符号) |
"%ld" | 按十进制形式输出长整型 |
"%u" | 按十进制形式输出无符号整数 |
"%f" | 按浮点数输出 |
"%c" | 按字符型(单个字符)输出 |
"%s" | 按字符串输出 |
"%e""E" | 按指数形式的浮点数输出 |
"%x""%X" | 按十六进制形式输出无符号整数(不输出前缀0x) |
"%o" | 按八进制形式输出无符号整数(不输出前缀o) |
"%p" | 按16进制形式输出指针 |
"%g""%G" | 自动选择合适的表示法 |
"%n" | 到此字符之前为止,一共输出的字符个数,不输出文本 |
"%%" | 输出 % |
注:对于单精度数,使用%f格式符输出时,仅前7位是有效数字,小数六位。
对于双精度数,使用%lf格式符输出时,前16位是有效数字,小数6位。
1. 在“%”和字母之间插入数字表示最大场宽。
1) 如:%3d表示输出3位整型数,不够3位右对齐
%3.2f 表示场宽为9的浮点数,其中小数位为2,整数位为6,小数点占一位,不够9位右对齐
%3s 表示输出8个字符的字符串,不够8个字符右对齐。如果字符串的长度、或整型数位数超过说明的场宽,将按其实际长度输出。
2) 对浮点数,若整数部分位数超过了说明的整数位宽度,将按实际整数位输出;若小数部分位数超过了说明的小数位宽度,则按说明的宽度以四舍五入输出。
3)若想要再输出值前加一些0,就应该在场宽项前加个0。如:%03d 表示在输出一个小于4位的数值时,将会在前面补0使其总宽度为3位。
4)如果用浮点数表示字符或整型量的输出格式,小数点后的数字代表最大宽度,小数点前的数字代表最小宽度。如:%3.9s 表示显示一个长度不小于3且不大于9的字符串。若大于9,则第9个字符以后的内容将被删除。
2. 在"%"和字母之间加入标志字符,可以控制输出对齐方式。加“-”表示输出为左对齐,否则为右对齐。如:%-3d 表示输出3位整数左对齐
标志 | 意义 |
- | 结果左对齐,右边填空格(默认右对齐) |
+ | 输出符号(正号或负号) |
空格 | 输出值为正时冠以空格,为负时冠以负号 |
# | 对c、s、d、u类无影响 对o、x、X类,在输出时加前缀o、0x、0X 对x类,在输出时加前缀0x 对e、E、g、G、f类,一定使用小数点 对g、G时,尾部的0保留 |
符号 | 意义 | 符号 | 意义 |
\n | 换行 | \b | Backspace |
\f | 清屏并换页 | \r | 回车 |
\t | Tab符 | \" | 双引号 |
\? | 文本问号 | \' | 单引号 |
\\ | 反斜杠 | \xhh(如:\x20) | ASCII字符(HEX) |
\ooo(如\024) | ASCII字符(OCX) | \xhhh | 宽字符(2字节HEX) |