C语言:printf的格式字符串
printf的格式字符串 : %[标记] [ [ * ] [数据宽度] ] [.精确度]类型
+ |
- |
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
posted on 2012-03-14 22:25 codestyle 阅读(1101) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述