0

所以如果我有类似的输出

Hello How are you         500
Halllo                    500

并且那个“500”总是应该在那个特定的位置,不管它前面有什么需要放什么?

我试过添加类似的东西

printf ("10%d", w.e);
printf ("\t\t%d", w.e);

但是像“你好,你好吗”和“你好”这样的词总是会影响它并沿着同一条线进一步移动。如何将 500 输出定位在一个位置?

4

4 回答 4

6

您需要右填充前面的单词 ieHello How are youHalllo. 一旦它被填充,那么500将始终从相同的位置开始。

您可以将字符串右填充为:

      printf("%-30s", "Hello How are you");
      printf("%-30s", "Halllo");

这将为字符串分配 30 个字符长度。您的号码将跟随下一个。

于 2012-12-02T20:49:49.130 回答
1

您可以使用 printf 指定前导字符串应占用的最小字符数,就像格式化数值时一样。

事实上,您可以在一次调用 printf(伪代码)中打印两者:

format_string = "%-30s%5.0d";
leading_text = "hello";
number = 500;
printf(format_string, leading_text, number);
于 2012-12-02T20:51:58.297 回答
1

像这样的东西?

printf("%-50s%d\n", "Hello How are you", 500);
printf("%-50s%d\n", "Halllo", 500);

打印出来:

Hello How are you                                 500
Halllo                                            500
于 2012-12-02T20:52:28.553 回答
1

这是另一种可能更灵活的方法:

printf("%*d\n", 50-printf("Halllo"), 500);
于 2012-12-02T21:06:07.317 回答