让我知道我有一个带数值的变量,我想用10个字符打印它,如下所示:XXX XXXX XXX XXXX
。因此,例如,数字10将打印为000 0000 000 0010
。
我最接近的方式是使用,例如:
int value = 10;
printf("%010D", value);
然而它显然产生了:
0000000010
有没有人知道是否有任何可以输出的内置功能
000 0000 000 0010
还是有必要实施一个?
提前致谢
答案 0 :(得分:7)
首先请注意,32位int的最大值为2,147,483,647。因此,14位数字是不可能的(除了至少4个前导零)。您需要64位long long int
才能获得14个非零数字。
没有简单的库调用允许它,但实现这一点并不难。一种方法是使用整数数学拆分值。另一种方法是拆分字符串:
int main(void) {
long long int value = 12345678901234;
// by string splitting...
char buf[32];
sprintf(buf, "%014lld", value);
printf("%.3s %.4s %.3s %.4s\n", buf, buf + 3, buf + 7, buf + 10);
// by integer modular arithmetic...
unsigned v0 = (unsigned)(value % 10000);
value /= 10000;
unsigned v1 = (unsigned)(value % 1000);
value /= 1000;
unsigned v2 = (unsigned)(value % 10000);
value /= 10000;
unsigned v3 = (unsigned)value;
printf("%03u %04u %03u %04u\n", v3, v2, v1, v0);
return 0;
}