我有一个for循环,打印出数组中的数据,但是我希望它们打印出来,以便它们整齐排列。
1. 123124124 24
2. 12412452 56
3. 12312 12
.
.
.
10. 12412412 12
我有printf("%d.%d%d\n", x, y, z)
;任何帮助表示赞赏!
答案 0 :(得分:3)
printf("%-3d%-12d%d\n", x, y, z);
减号后面和d之前的数字是字段的最小宽度。对于count列,我们希望它至少为3列宽。但是,我们还希望它向右填充,这就是使用减号的原因。
同样适用于%-12d,但最小宽度为12.看看此示例
如果您想要这段时间,则必须将其打印为%s的字符串。
答案 1 :(得分:1)
OP请求的格式具有挑战性,因为它希望'.'
紧跟(int) x
之后,然后根据需要进行填充。
@BLUEPIXY提供了一个漂亮的解决方案。这利用了首次打印x
的结果。
printf("%-*s%-9d%3d\n", 4-printf("%d", x), ".", y, z);
替代方案,转换为double
。
"%-#3.0f
打印double
,至少3个字符,左对齐,始终为'.'
,'.'
后没有数字。
//123 123456789 12
//10. 12412412 12
//1. 123124124 24
printf("%-#3.0f %-9d %d\n", (double) x, y, z);
答案 2 :(得分:0)
printf("%d. \t %d \t %d \n", x, y, z);
\ t会插入一个标签,可以很好地对齐您的代码。
答案 3 :(得分:0)
使用%-numd
或%numd
来控制输出样式。
num
表示您想要的宽度。将其替换为数字,例如:%-10d
或%10d
。
-
表示左对齐。没有它,输出将是右对齐的。
例如:printf("%-5d%5d",123,456)
然后输出将是123 456