我试图找到一个好方法打印前导0,如01001邮政编码。当这个数字被存储为1001时,什么是一个好方法呢?

我想过使用case语句或if来计算出数字是多少位,然后将其转换为带有额外0的字符数组进行打印,但我不禁想,可能有一种方法可以用printf格式语法来做到这一点,这是逃避我的。


当前回答

如果你需要将邮政编码存储在字符数组zipcode[]中,你可以使用这个:

snprintf(zipcode, 6, "%05.5d", atoi(zipcode));

其他回答

如果将ZIP Code存储为字符串(它是字符串),而不是存储为数字(它不是字符串),您将为自己节省大量麻烦(长期而言)。

在最小字段宽度之前放一个零:

printf("%05d", zipcode);

Printf允许各种格式选项。

例子:

printf("leading zeros %05d", 123);

正确的解决方案是将ZIP Code作为STRING存储在数据库中。尽管它看起来像一个数字,但它不是。这是一个代码,每个部分都有意义。

数字是你做算术的东西。邮政编码不是那样的。

如果你需要将邮政编码存储在字符数组zipcode[]中,你可以使用这个:

snprintf(zipcode, 6, "%05.5d", atoi(zipcode));