我试图找到一个好方法打印前导0,如01001邮政编码。当这个数字被存储为1001时,什么是一个好方法呢?
我想过使用case语句或if来计算出数字是多少位,然后将其转换为带有额外0的字符数组进行打印,但我不禁想,可能有一种方法可以用printf格式语法来做到这一点,这是逃避我的。
我试图找到一个好方法打印前导0,如01001邮政编码。当这个数字被存储为1001时,什么是一个好方法呢?
我想过使用case语句或if来计算出数字是多少位,然后将其转换为带有额外0的字符数组进行打印,但我不禁想,可能有一种方法可以用printf格式语法来做到这一点,这是逃避我的。
当前回答
Printf允许各种格式选项。
例子:
printf("leading zeros %05d", 123);
其他回答
Printf允许各种格式选项。
例子:
printf("leading zeros %05d", 123);
如果你在*nix机器上:
man 3 printf
这将显示一个手册页面,类似于:
该值应该是填充的。对于d i o u x x a a e, E, f, f, g和g转换,转换后的值被填充 左边是0而不是空。如果0和-标志 两者都出现时,0标志将被忽略。如果给出了精度 使用数值转换(d, i, o, u, x和x), 0标志为 忽略了。对于其他转换,行为是未定义的。
即使问题是针对C的,这一页可能会有所帮助。
sprintf(mystring, "%05d", myInt);
在这里,“05”表示“使用5位前导零”。
如果将ZIP Code存储为字符串(它是字符串),而不是存储为数字(它不是字符串),您将为自己节省大量麻烦(长期而言)。
如果你需要将邮政编码存储在字符数组zipcode[]中,你可以使用这个:
snprintf(zipcode, 6, "%05.5d", atoi(zipcode));