左垫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);