在C / C ++中打印前导空格和零

时间:2015-03-25 11:15:10

标签: c printf

我需要在数字前打印一些前导空格和零,以便输出如下:

00015
   22
00111
    8
  126

此处,我需要在号码为leading spaces时打印even,在leading zero

时打印odd

以下是我的表现:

int i, digit, width=5, x=15;

if(x%2==0)  // number even
{
    digit=log10(x)+1;  // number of digit in the number
    for(i=digit ; i<width ; i++)
      printf(" ");
    printf("%d\n",x);
}
else       // number odd
{
    digit=log10(x)+1;  // number of digit in the number
    for(i=digit ; i<width ; i++)
      printf("0");
    printf("%d\n",x);
}

有没有快捷方式可以做到这一点?

1 个答案:

答案 0 :(得分:14)

要打印leading space and zero,您可以使用此功能:

int x = 119, width = 5;

// Leading Space
printf("%*d\n",width,x);

// Leading Zero
printf("%0*d\n",width,x);

所以在你的程序中只需改变它:

int i, digit, width=5, x=15;

if(x%2==0)  // number even
    printf("%*d\n",width,x);
else        // number odd
    printf("%0*d\n",width,x);