带有空格的左边打印页面

时间:2008-11-16 03:32:32

标签: c formatting printf

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

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

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

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

4 个答案:

答案 0 :(得分:105)

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

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

那将为您提供35个空格,然后是“Hello”。当你知道你想要列的宽度时,你就可以格式化这些东西,但数据会发生变化(好吧,你可以用一种方式)。

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

答案 1 :(得分:61)

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

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

答案 2 :(得分:32)

int space = 40;
printf("%*s", space, "Hello");

此语句将保留一行40个字符,在行的末尾打印字符串(删除多个空格,使总行长度恒定为40)。 同样可以用于字符和整数,如下所示:

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

在需要可变数量的空格的情况下,使用参数确定空间的此方法很有用。这些语句仍然适用于整数文字,如下所示:

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

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

答案 3 :(得分:16)

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

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

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

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

你也可以通过以下方式在字符串之后放置“最多”40个空格:     printf("%-40s", myStr);