如何打印特定长度的输出?像%d一样总是50个空格?

时间:2012-12-02 20:46:44

标签: c

所以如果我有像

这样的输出
Hello How are you         500
Halllo                    500

那个“500”总是应该存在于那个特定的位置,无论它面前需要放什么?

我尝试过添加

之类的内容
printf ("10%d", w.e);
printf ("\t\t%d", w.e);

但是“hello how are you”和“hallo”这样的词总是影响它并沿着同一条线进一步移动。如何将500输出始终放在一个位置?

4 个答案:

答案 0 :(得分:6)

您需要右键填充前一个词,即Hello How are youHalllo。填充后,500将始终以相同的位置开始。

您可以将字符串填充为:

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

这将为字符串分配30个字符长度。您的电话号码将在下一个电话号码之后。

答案 1 :(得分:1)

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

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

format_string = "%-30s%5.0d";
leading_text = "hello";
number = 500;
printf(format_string, leading_text, number);

答案 2 :(得分:1)

这样的事情?

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

打印出来:

Hello How are you                                 500
Halllo                                            500

答案 3 :(得分:1)

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

printf("%*d\n", 50-printf("Halllo"), 500);