使用 printf 时,如何在左侧填充带有空格的字符串?
例如,我想打印前面有 40 个空格的“Hello”。
此外,我要打印的字符串由多行组成。我需要单独打印每一行吗?
编辑:为了清楚起见,我希望在每行之前打印 40 个空格。
使用 printf 时,如何在左侧填充带有空格的字符串?
例如,我想打印前面有 40 个空格的“Hello”。
此外,我要打印的字符串由多行组成。我需要单独打印每一行吗?
编辑:为了清楚起见,我希望在每行之前打印 40 个空格。
如果您希望在 40 个字符宽的列中打印单词“Hello”,并在左侧填充空格,请使用以下命令。
char *ptr = "Hello";
printf("%40s\n", ptr);
这会给你 35 个空格,然后是“你好”这个词。当您知道想要列的宽度时,这就是您格式化内容的方式,但是数据会发生变化(嗯,这是您可以做到的一种方式)。
如果你知道你想要 40 个空格然后是一些文本,只需将 40 个空格保存在一个常量中并打印它们。如果您需要打印多行,可以使用多个printf
语句,如上面的语句,或者循环执行,更改ptr
每次的值。
我使用这个函数来缩进我的输出(例如打印一个树结构)。是字符串前的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");
希望这对将来像我这样的人有所帮助。
如果你想在字符串前正好有 40 个空格,那么你应该这样做:
printf(" %s\n", myStr );
如果这太脏了,你可以这样做(但它会比手动输入 40 个空格要慢):
printf("%40s%s", "", myStr );
如果您希望字符串在第 40 列排成一行(也就是说,在它前面最多有 39 个空格,以便最右边的字符在第 40 列中),请执行以下操作:
printf("%40s", myStr);
您还可以通过执行以下操作在字符串之后放置“最多”40 个空格:
printf("%-40s", myStr);