printf右对齐一个括号内的数字

Ale*_*lex 5 c format printf

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

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

printf("%-10d", index);
Run Code Online (Sandbox Code Playgroud)

但是在其周围加上括号会产生以下输出

[         1]
[         2]
...
[        10]
[        11]
Run Code Online (Sandbox Code Playgroud)

当我真的想要它时:

         [1]
         [2]
...
        [10]
        [11]
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

Gil*_*il' 8

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

char buf[sizeof(index) * (CHAR_BITS + 2) / 3 + 4];
sprintf(buf, "[%d]", index);
printf("%-12s", buf);
Run Code Online (Sandbox Code Playgroud)