我试图找到一种打印前导0的好方法,例如邮政编码为01001。 虽然该数字将存储为1001,但是这样做的一种好方法是什么?
我想使用任一种case语句/ if,然后找出数字的位数,然后将其转换为带有额外0的char数组以进行打印,但我忍不住想了想用我无法理解的printf格式语法。
#1楼
printf("%05d", zipCode);
0
表示要填充的内容, 5
表示整数的长度。 例如,如果您使用"%02d"
(对日期有用),则只会在“ 1”列中的数字上填充零,即( 06
而不是6
)。 示例2, "%03d"
将在one列中填充2个零作为一个数字,在tens列中填充1个零作为一个数字。 即。 (将7填充到007
,将17填充到017
)。
#2楼
printf允许各种格式设置选项。
例如:
printf("leading zeros %05d", 123);
#3楼
您在最小字段宽度之前放置零:
printf("%05d",zipcode);
#4楼
如果您在* NIX机器上:
man 3 printf
这将显示一个手册页,类似于:
0该值应为零填充。 对于d,i,o,u,x,X,a,A,e,E,f,F,g和G转换,转换后的值在左侧填充零而不是空白。 如果同时出现0和-标志,则忽略0标志。 如果通过数字转换(d,i,o,u,x和X)给出精度,则忽略0标志。 对于其他转换,行为是不确定的。
即使问题是针对C的, 此页面也可能会有所帮助。
#5楼
sprintf(mystring, "%05d", myInt);
此处,“ 05”表示“使用前导零的5位数字”。
来源:oschina
链接:https://my.oschina.net/u/3797416/blog/3196951