带空格的左键输出

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

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

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

编辑: 只是为了清楚,我想正好40空格印在每一行之前。

322693 次浏览

如果希望在40个字符宽、左边有空格填充的列中打印单词“ Hello”,请使用下列命令。

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

它会给你35个空格,然后是“ Hello”。这就是当您知道想要的列有多宽,但是数据发生变化时的格式化方法(好吧,这是 的方法,您可以这样做)。

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

如果在字符串之前需要40个空格,那么应该这样做:

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

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

如果希望字符串在第40列排成一行(也就是说,最多有39个空格,使得最右边的字符位于第40列) ,那么可以这样做: printf("%40s", myStr);

你也可以在字符串后面加上40个空格,方法是: printf("%-40s", myStr);

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

void print_with_indent(int indent, char * string)
{
printf("%*s%s", indent, "", string);
}
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");

希望以后能帮到像我这样的人。