C 用括号括起来时%4d有什么用?
我下面有一个C代码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)
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位字段,我认为这应该足够了。