在C中打印前导0?

人走茶凉 提交于 2020-03-17 19:53:43

某厂面试归来,发现自己落伍了!>>>

我试图找到一种打印前导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位数字”。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!