左垫printf与空格

使用printf时,如何在左边填充一个空格string?

例如,我想打印“Hello”,前面有40个空格。

另外,我想打印的string由多行组成。 我需要分别打印每一行吗?

编辑:只是要清楚,我想正好打印每行前40个空格。

如果您希望单词“Hello”打印在40个字符宽的列中,并在左侧填充空格,请使用以下内容。

char *ptr = "Hello"; printf("%40s\n", ptr); 

这会给你35个空格,然后是“你好”字样。 这是如何格式化的东西,当你知道你想要多大的列,但数据的变化(嗯,这是你可以做到这一点)。

如果你知道你只需要40个空格然后是一些文本,只需要将这40个空格保存在一个常量中并打印出来。 如果需要打印多行,可以使用多个printf语句(如上面的语句),或者在循环中执行,每次更改ptr的值。

我使用这个函数来缩进我的输出(例如打印一个树结构)。 indent是string之前的空格的数量。

 void print_with_indent(int indent, char * string) { printf("%*s%s", indent, "", string); } 
 int space=40; printf("%*s",space,"Hello"); 

该语句将保留一列40个字符,在列末尾打印string(不是在列之后,在最后一列中。使用的列总数仍然是40)。 同样可以用于数字和整数如下

 printf("%*d",space,10); printf("%*c",space,''); 

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

 printf("%*d",10,10); printf("%*c",20,''); printf("%*s",30,"Hello"); 

希望这将有助于像我这样的人。

如果你想要在string前40个空格,那么你应该这样做:

 printf(" %s\n", myStr ); 

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

如果你想把string排在第40列(也就是说,最多有39个空格,使得最右边的字符在第40列),那么这样做: printf("%40s", myStr);

你也可以把“最多”40个空格的string做: printf("%-40s", myStr);