我想让我的代码打印在一点更漂亮的方式,但我不知道如何解决我的问题....
Protein: Donations:0 Requests: 0
Dairy: Donations:0 Requests: 0
Grains: Donations:0 Requests: 0
Vegetables: Donations:0 Requests: 0
Fruits: Donations:0 Requests: 0
下面是打印语句的代码:
printf("%s:tDonations:%d Requests: %dn", TYPES[i], status[0][i], status[1][i]);
我希望它看起来是这样的:
Protein: Donations:0 Requests: 0
Dairy: Donations:0 Requests: 0
Grains: Donations:0 Requests: 0
Vegetables: Donations:0 Requests: 0
Fruits: Donations:0 Requests: 0
任何想法?
诀窍是打印冒号,后面加上正确数目的空格。您可以利用printf
提供的几个特性来实现这一点:
-
printf
返回它打印的字符数 -
printf
可以在最小字段宽度内左对齐文本,例如,在格式字符串"%-10s"
中,负号导致文本左对齐,而数字10
指定的最小字段宽度为10。 - 字段宽度可以作为变量传递,例如
printf( "%-*s", 10, "hello" )
将打印"hello"
后面跟着5个空格
int count = printf( "%s", TYPES[i] );
printf( "%-*s", 16-count, ":" );
printf( "Donations:%2d Requests:%2dn", status[0][i], status[1][i] );