如何在C中垂直打印?

时间:2013-09-23 22:43:42

标签: c format printf

我必须在一个循环中打印,我想用两行打印输出,而不是在一行上混合。

像这样:

printf("| %-7.2f ", Fahrenheit);

产生:

| -508.00 | -463.00 | -418.00 | -373.00 | -328.00 | -283.00 |

当我在上面的printf下添加printf("| %-6d", Celsius);时,它会打印在我的第一个printf中间/的中间。

我希望输出如下:

| -508.00 | -463.00 | -418.00 | -373.00 | -328.00 | -283.00 |
| -300  | -275  | -250  | -225  | -200  | -175  | -150  | -125|

而不是在同一行上混合两组值。

我的部分代码:

for(Celsius = CelsiusMin;Celsius <= CelsiusMax; Celsius += CelsiusStep)
   {
      Fahrenheit = FahrenheitZero + Celsius * CelsiusToFahrenheit;

     printf("| %-7.2f ", Fahrenheit);
     printf("| %-6d", Celsius);

   }
   return EXIT_SUCCESS;
}

2 个答案:

答案 0 :(得分:2)

你不能直接有一个printf()语句序列写入第1行,第二个并发序列printf()语句写入第2行,所以你不得不伪造它。

您可能需要构建两行输出的东西,然后在它们准备就绪时打印出来:

char line1[128];
char line2[128];
char *next1 = line1;
char *next2 = line2;

for (int c = -325; c <= -125; c += 25)
{
     double f = (c + 40.0) * (9.0 / 5.0) - 40.0;
     next1 += sprintf(next1, "| %-7.2f ", f);
     next2 += sprintf(next2, "| %-7d ", c);
}

printf("%s|\n", line1);
printf("%s|\n", line2);

示例输出:

| -553.00 | -508.00 | -463.00 | -418.00 | -373.00 | -328.00 | -283.00 | -238.00 | -193.00 |
| -325    | -300    | -275    | -250    | -225    | -200    | -175    | -150    | -125    |

转换公式比您所看到的通常更简单,并且对称将°F转换为°C或反之亦然,差异是转换因子(9.0 / 5.0)(5.0 / 9.0)。它依赖于-40°C = -40°F。试试吧:

  • C =  0°C; (C+40) = 40; (C+40)*9 = 360; (C+40)*9/5 = 72; (C+40)*9/5-40 = 32°F
  • F = 32°F; (F+40) = 72; (F+40)*5 = 360; (F+40)*5/9 = 40; (F+40)*5/9-40 =  0°C

你也可以用摄氏度作为double打印得更好;我保留了你选择的整数表示,但确保数字在两行上排成一行。

仅供参考:绝对零度为-273.15°C,0K,-459.57°F。所以你试图打印不存在的温度。

答案 1 :(得分:-1)

您可以使用“\ t”来对齐输出。