如何格式化printf输出

时间:2016-09-17 00:37:17

标签: c printf

我有一个for循环,打印出数组中的数据,但是我希望它们打印出来,以便它们整齐排列。

1.  123124124 24
2.  12412452  56
3.  12312     12
.
.
.
10. 12412412  12

我有printf("%d.%d%d\n", x, y, z);任何帮助表示赞赏!

4 个答案:

答案 0 :(得分:3)

printf("%-3d%-12d%d\n", x, y, z);

减号后面和d之前的数字是字段的最小宽度。对于count列,我们希望它至少为3列宽。但是,我们还希望它向右填充,这就是使用减号的原因。

同样适用于%-12d,但最小宽度为12.看看此示例

http://codepad.org/jJA8v8v8

如果您想要这段时间,则必须将其打印为%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