Printf数字右对齐

时间:2011-01-27 17:53:03

标签: c formatting printf

我正在尝试格式化一个值为0到9,999的数字。我希望始终显示2个最重要的数字,即

5000 - > 50个
0000 - > 00

如果其中一个最低有效数字为非零,则应显示它们,即

150 - > 015
101 - > 0101

可以用一些hackery来完成,但是C的printf可以直接执行吗?

3 个答案:

答案 0 :(得分:3)

是的,您可以将printf用于此

int v = 5000;
if ((v % 100) != 0)
    printf("%04d", v);
else
    printf("%02d", v/100);

答案 1 :(得分:1)

丑陋,但尽我所知:

printf("%d", value / 1000);
printf("%d", (value % 1000) / 100);
if(value % 100) printf("%d", (value % 100) / 10);
if(value % 10)  printf("%d", value % 10);

我会尝试更多地打高尔夫球:

printf("%02d", value / 100);
if(value % 10) printf("%02d", value % 100);
else if(value % 100) printf("%d", (value % 100) / 10);

int hi = value / 100, lo = value % 100;
printf(lo ? "%02d%0*d" : "%02d", hi, 1 + !!(lo % 10), lo % 10 ? lo : lo / 10);

答案 2 :(得分:-1)

<击> printf("%d", v/(v%100?v%10?100:10:1));

试试这个:

printf("%.*d", 4-!(v%100)-!(v%10), v/(v%100?v%10?100:10:1));