我正试图找到一种打印前导0的好方法,例如01001的邮政编码.虽然这个数字会被存储为1001,但这样做的好方法是什么?
我想过要么使用case case语句/如果那么弄清楚这个数字是多少位数,然后把它转换成一个带有额外0的打印的char数组,但我不禁想到有可能有办法用printf格式语法,这是我的意思.
printf("%05d", zipCode);
正确的解决方案是将邮政编码作为STRING存储在数据库中.尽管它可能看起来像一个数字,但事实并非如此.这是一个代码,每个部分都有意义.
数字是你算术的东西.邮政编码不是.
在最小字段宽度之前放置零:
printf("%05d",zipcode);
Zipcode是一个高度本地化的领域,许多国家的邮政编码都有字符,例如英国,加拿大.因此,在此示例中,您应该使用字符串/ varchar字段来存储它,如果您在任何时候发货或从其他国家/地区获取用户/客户/客户/等.
但是在一般情况下,您应该使用建议的答案(printf("%05d", number);
).
如果你在*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,这个页面可能有帮助.
sprintf(mystring, "%05d", myInt);
这里,"05"表示"使用带有前导零的5位数字".
printf允许各种格式化选项.
例如:
printf("leading zeros %05d", 123);