我正在编写一个显示数组中所有信息的程序。它必须从括号中的数组索引开始(例如[2]
),并且它们必须彼此正确对齐。
如果只是数字,我知道你可以这样做:
printf("%-10d", index);
但是将括号括起来会产生以下输出
[ 1]
[ 2]
...
[ 10]
[ 11]
当我真的想要它时:
[1]
[2]
...
[10]
[11]
我该怎么做?
答案 0 :(得分:8)
分两步完成:首先在临时缓冲区中构建一个非对齐字符串,然后将字符串右对齐打印。
char buf[sizeof(index) * (CHAR_BITS + 2) / 3 + 4];
sprintf(buf, "[%d]", index);
printf("%-12s", buf);
答案 1 :(得分:2)
一件容易的事就是将其分解为两个步骤:
char tmp[128];
sprintf(tmp, "[%d]", index);
printf("%-10s", tmp);
答案 2 :(得分:2)
你只需要一行和没有临时字符缓冲区:
printf("%*s[%d]\n",12-(int)log10(index),"",index);