C 用括号括起来时%4d有什么用?

C 用括号括起来时%4d有什么用?,c,C,我下面有一个C代码 int main (void) { int n = 5; printf ("%4d\n",n); return 0; } 它给我的输出是5,前导四个空格 但是如果我想打印带有四个前导空格的“(5)”(但是带有三个前导空格的“(21)”,或者带有两个前导空格的“(987)”,等等),那么代码是什么呢 同时我尝试了printf(“%4(d)\n”,n)和printf((%4d)\n),n)

我下面有一个C代码

int main (void)
{
    int n = 5;

    printf ("%4d\n",n);

    return 0;
}
它给我的输出是5,前导四个空格

但是如果我想打印带有四个前导空格的“
(5)
”(但是带有三个前导空格的“
(21)
”,或者带有两个前导空格的“
(987)
”,等等),那么代码是什么呢


同时我尝试了
printf(“%4(d)\n”,n)
printf((%4d)\n),n)

您已经打印出int值,“4”告诉
printf
将输出格式化为4个字符的长度

更多详细信息。

char n$:n是使用此格式显示的参数的编号 说明符,允许提供的参数输出多个 时间,使用不同的格式说明符或以不同的顺序。如果有的话 单个占位符指定一个参数,包括 占位符还必须指定一个参数

例如

 printf("%2$d %2$#x; %1$d %1$#x",16,17) produces 17 0x11; 16 0x10.

您需要分两步完成。首先创建一个字符串,该字符串包含由括号包围的数字,不带任何填充:

char numstr[32];
sprintf(numstr, "(%d)", n);
然后使用
%s
格式在带填充的字段中打印

printf("%4s\n", numstr);

使用%4d时,您可以将printf的输出格式定义为4个字符的长度。

printf((%d)\n),n)
应该只有3个空格,而不是4个
%4d
表示整个字段占用4个字符。如果要说
(5)
(55)
(555)
都打印到相同的宽度,您可以
sprintf
到一个临时缓冲区,然后
printf
使用字段宽度要求的字符串-正如@Barmar所回答的那样。因为他希望数字适合4位字段,我认为这应该足够了。