带有空格的左边打印页面

tit*_*coy 101 c formatting printf

使用printf时,如何在左侧填充带空格的字符串?

例如,我想打印"Hello",前面有40个空格.

另外,我想要打印的字符串由多行组成.我是否需要单独打印每一行?

编辑:为了清楚起见,我想在每一行之前打印40个空格.

Bil*_*ard 113

如果您希望在宽度为40个字符的列中打印"Hello"一词,并在左侧填充空格,请使用以下内容.

char *ptr = "Hello";
printf("%40s\n", ptr);
Run Code Online (Sandbox Code Playgroud)

这将给你35个空格,然后是"Hello".当你知道列的宽度,但数据发生了变化时(这是你可以做到的一种方式),这就是你格式化东西的方式.

如果您知道您只需要40个空格,那么只需要将常数中的40个空格保存并打印出来.如果需要打印多行,可以使用上面的多个printf语句,也可以循环执行,更改ptr每次的值.

  • 另外,如果你有一个包含要包含的空格数的int变量'n',你可以使用:printf("%*s%s \n",n,"",ptr); 获得可变数量的空格. (37认同)
  • @Jonathan Leffler:编译器当然可以优化printf格式.例如,GCC优化printf("%s \n",foo)并用puts(foo)替换它. (4认同)
  • dunno关于格式标志太多了.但我怀疑是printf("%40s%s \n","",ptr); 可以用来填40个空格吗? (3认同)
  • @Bill:编译器无法优化printf()格式. (2认同)

jk_*_*jk_ 67

我使用此函数缩进输出(例如打印树结构).该indent是字符串前的空格数.

void print_with_indent(int indent, char * string)
{
    printf("%*s%s", indent, "", string);
}
Run Code Online (Sandbox Code Playgroud)

  • 我喜欢你使用字符串文字串联来保持缩进与printf格式的其余部分分开.一个建议:使用空字符串而不是单个空格作为缩进字符串.这样缩进== 0将按预期工作.(即`printf(...,indent,"",...)`) (6认同)

小智 36

int space = 40;
printf("%*s", space, "Hello");
Run Code Online (Sandbox Code Playgroud)

此语句将保留一个包含40个字符的列,在列的末尾打印字符串(不在列之后,在最后一列中.使用的总列数仍为40).相同可用于数字和整数,如下所示

printf("%*d", space, 10);
printf("%*c", space, 'x');
Run Code Online (Sandbox Code Playgroud)

这种使用变量空间的方法在需要可变数量的空格的函数调用中很有用.这些语句仍然可以使用常量整数,如下所示

printf("%*d", 10, 10);
printf("%*c", 20, 'x');
printf("%*s", 30, "Hello");
Run Code Online (Sandbox Code Playgroud)

希望这能帮助像我这样的人.


Soa*_*Box 18

如果你想在字符串之前只有40个空格,那么你应该这样做:

printf("                                        %s\n", myStr );
Run Code Online (Sandbox Code Playgroud)

如果它太脏了,你可以这样做(但它比手动输入40个空格要慢): printf("%40s%s", "", myStr );

如果您希望字符串在第40列排成一行(也就是说,最多有39个空格继续进行,以便最右边的字符位于第40列),请执行以下操作: printf("%40s", myStr);

您还可以通过以下操作将"最多"40个空格放在字符串后面: printf("%-40s", myStr);

  • 喜欢这个字符串后面的空格注释 (3认同)