格式化输出有如下形式:
// 输出到标准输出设备,通常为显示器
int printf(const char *format, …)
// 输出到字符串
int sprintf(char *s, const char *format, …)
// 输出到文件
int fprintf(FILE *stream, const char*format, ...)
其中,format 为格式化输出字符串。格式化输出字符串由两类字符组成:一类是普通字符,这些字符将直接被拷贝到输出流;另一类是转换说明,每个转换说明都会将下一个参数进行格式转换后发送到输出流。转换说明以字符‘%’ 开始,以转换字符结束,在字符‘%’ 和转换字符之间依次可能有如下字符:
1. 符号。
- 。规定参数转换后左对齐。默认是右对齐。
+ 。规定打印数字时始终带符号(正负号)。
空格。如果首个字符不是符号,则在前面输出一个空格。
0 。如果数值转换后数字个数小于最小宽度,在前面以0 补齐。
# 。规定另外的输出形式。对o ,加上前缀0 ;对x 或者X ,在非零值前加上前缀0x 或者0X ;对e 、E 、f 、g 、G ,总是输出小数点;对g 或者G ,数值末尾的0 将会保留。
2. 一个指定最小输出宽度的数值。参数转换后输出的宽度必须大于或者等于该值。如果实际宽度小于该值,则在左边补齐(如果规定了左对齐,则在右边补齐)。默认的补齐字符是空格。如上所述,可以规定以0 补齐。
3. 句点。将输出宽度和精度分割开。
4. 一个指定精度的数值。对s ,表示字符串中可以输出的最大字符个数;对e 、E 、f ,表示小数点后的数字个数;对g 或者G ,表示有效数字的个数;对整数,表示输出的数字个数(实际个数不足时,在前面以0 补齐)。
5. 长度调节字符h 、l 或者L 。h 规定参数以short 或者unsigned short 形式输出,l 规定参数以long 或者unsigned long 形式输出,L 规定参数以long double 形式输出。
输出宽度或者精度(或者两者同时)可以用* 指定,此时输出宽度或者精度的具体值由下一个参数给出,注意该参数必须是int 类型。
具体的输出转换格式见表1 :
表格 1 : 输出转换格式