5

我正在编写一个程序,将所有信息显示在一个数组中。它必须从括号中的数组索引开始(例如[2]),并且它们必须彼此右对齐。

如果只是数字,我知道你可以这样做:

printf("%-10d", index);

但是将括号括起来会给出以下输出

[         1]
[         2]
...
[        10]
[        11]

当我真的想要它时:

         [1]
         [2]
...
        [10]
        [11]

我该怎么做呢?

4

3 回答 3

8

分两步完成:首先在临时缓冲区中构建一个未对齐的字符串,然后打印右对齐的字符串。

char buf[sizeof(index) * (CHAR_BITS + 2) / 3 + 4];
sprintf(buf, "[%d]", index);
printf("%-12s", buf);
于 2012-09-03T20:03:58.043 回答
2

一件简单的事情是将其分解为两步过程:

char tmp[128];
sprintf(tmp, "[%d]", index);
printf("%-10s", tmp);
于 2012-09-03T20:04:29.190 回答
2

您只需要一行,不需要临时字符缓冲区:

printf("%*s[%d]\n",12-(int)log10(index),"",index);
于 2012-09-03T21:09:18.347 回答