C语言:printf的格式字符串
2012-03-14 22:25
295 查看
printf的格式字符串: %[标记] [ [ * ] [数据宽度] ] [.精确度]类型
-表示该类型不需要这个选项
从上表看出只有数据宽度和对齐才是所有类型都支持的格式,指定宽度时默认右对齐
只有在指定最小宽度时,我们才能使用-,0标志,这个时候的对齐和填充才有意义,实际上只要指定最小宽度,且数据不足这个宽度就一定会发生填充,以空白字符或者填充在数据前部或者填充在数据后部(视对齐情况而定)而0则是特指用0填充在数据前方,这样做是为了让数据对齐显得好看,需要说明的是虽然很多类型支持左对齐和填充0,但是实际上这两个选项是冲突的,左对齐就不可能填充0,填充0就不可能左对齐,左对齐的意思是说以空白符在数据之后进行填充
一些例子
"%12d" 数据宽度最少占12个字符宽,如数据不足12个字符则数据右对齐
"%+-12d" 12d含义同上,不同之处在于打印符号,数据左对齐
"%#x" 数据3A打印成0X3a
"%.4f" 数据保留小数点后4位的精度
实际上printf的格式字符串和sprintf是相同的
char buffer[100];
sprintf(buffer,"%10d",12);
printf("the string is %d bytes\n",strlen(buffer));
输出the string is 10 bytes
+ | - | 0 | # | 最小宽度 | 精确度 | 类型 |
显示符号 | 左对齐 (默认右对齐) | 数据前填0 (右对齐时) | 8进制加0 16进制加0x | 10进制整数 或者*号 | 例如.2 | |
- | Y | - | - | Y | - | c |
- | Y | - | - | Y | - | s |
Y | Y | Y | - | Y | - | d,i |
- | Y | Y | - | Y | - | u |
- | Y | Y | Y | Y | - | o |
- | Y | Y | Y | Y | - | x |
Y | Y | Y | - | Y | Y | f,e,g,a |
从上表看出只有数据宽度和对齐才是所有类型都支持的格式,指定宽度时默认右对齐
只有在指定最小宽度时,我们才能使用-,0标志,这个时候的对齐和填充才有意义,实际上只要指定最小宽度,且数据不足这个宽度就一定会发生填充,以空白字符或者填充在数据前部或者填充在数据后部(视对齐情况而定)而0则是特指用0填充在数据前方,这样做是为了让数据对齐显得好看,需要说明的是虽然很多类型支持左对齐和填充0,但是实际上这两个选项是冲突的,左对齐就不可能填充0,填充0就不可能左对齐,左对齐的意思是说以空白符在数据之后进行填充
一些例子
"%12d" 数据宽度最少占12个字符宽,如数据不足12个字符则数据右对齐
"%+-12d" 12d含义同上,不同之处在于打印符号,数据左对齐
"%#x" 数据3A打印成0X3a
"%.4f" 数据保留小数点后4位的精度
实际上printf的格式字符串和sprintf是相同的
char buffer[100];
sprintf(buffer,"%10d",12);
printf("the string is %d bytes\n",strlen(buffer));
输出the string is 10 bytes
相关文章推荐
- C语言数字字符串转换为十六进制格式函数
- C语言Printf格式
- 【C语言的日常实践(十六)】字符串输出功能puts、fputs和printf
- c函数scanf(),printf()等常用格式字符串
- C语言的printf格式控制问题(3)
- printf 字符串格式
- c语言 printf()输出格式控制
- printf输出字符串的一些格式
- C语言 printf输出字符串数据
- C语言 printf格式控制符 完全解析
- [C语言] 时间操作,把1970年开始秒数计算的时间,转换为字符串格式输出;
- C语言的printf函数(格式输出函数)
- Linux下用C语言将一个字符串格式(char*)的MAC地址转换为十六进制数组
- C语言 64位整型的printf格式控制
- C语言Printf格式
- C语言printf()函数:格式
- C语言Printf格式大全(各种%输出形式)
- 时间字符串格式相互转换——C语言
- 【面试准备】C语言printf输出格式
- 实例 C语言Printf格式