2016-10-22 61 views
4

我试图让我的代码打印在一点点更漂亮的方式,但我不知道如何解决我的问题....格式化字符串和文本在网格看凝聚力用C

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 

下面是我对print语句代码:

printf("%s:\tDonations:%d Requests: %d\n", 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 

任何IDE如?

回答

3

诀窍是在冒号后面输入正确数量的空格。

  • 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:%2d\n", status[0][i], status[1][i]);