我希望我的所有线条都能正确排列,但出于某种原因,当我将其打印出来时,它看起来很弯曲,就像这样:
Activity
我的printf调用代码:
Weather summary for 2013
| Month | High | Low | Avg | Precip |
|-----------|-------|-------|-------|---------|
| January| 9.8 | -26.2 | -7.8 | 55.3 |
| February| 7.5 | -23.3 | -8.6 | 33.1 |
| March| 14.2 | -19.6 | -4.7 | 33.2 |
| April| 23.7 | -5.3 | 6.2 | 56.8 |
| May| 33.0 | -0.6 | 13.9 | 62.7 |
| June| 32.1 | 8.0 | 19.7 | 69.7 |
| July| 34.9 | 12.6 | 22.2 | 181.8 |
| August| 31.5 | 11.0 | 20.9 | 69.2 |
| September| 34.1 | 5.0 | 16.1 | 69.0 |
| October| 24.8 | -2.9 | 10.8 | 56.9 |
| November| 16.0 | -12.8 | 2.1 | 36.2 |
| December| 15.6 | -17.8 | -4.2 | 65.8 |
谢谢!
答案 0 :(得分:2)
对于这种格式化的输出,你只需粗略估计每个字段的宽度,然后让printf
完成所有的格式化,而不是计算空格,然后得出类似{{1 }} ..
例如,在这种情况下,从标题开始,粗略估计每个标题字段的宽度:
%4.1f
然后对于以下行,使用相同的宽度,只需将printf( "|%-20s|%-10s|%-10s|%-10s|%-10s|\n", "Month", "High", "Low", "Avg", "Precip" );
替换为%s
以获取浮点数。您可以操纵小数点后的位置数。
%f
答案 1 :(得分:0)
由于您使用-4.1f作为printf说明符,因此在小数点后总是会得到1个空格,因此对于负数而言,总共4个空格是不够的,而printf在输出中添加了额外的空格您。因此,您需要使用-5.1f为一个小数点和 - 符号获取足够的空间。所以,如果你得到像-123.4这样的数字,你将无法再次正确对齐。