如何使用 printf 函数对齐说出以下文本 假设我想要期望的输出
void print() {
printf("%s %s %d %c\n",firstName, lastName, age, gender);
}
成为:
Foo Foo 15 M
Bob Bob 16 F
John John 12 M
我遇到的问题是因为名字 John 较长,它会将下一个说明符向下推一点。我希望它们对齐,以便每一行都按顺序排列。
最佳答案
将名字和姓氏复制到一个临时字符串中。然后将其传递给 printf
,使用 %s
上的字段宽度足够大以适合全名,并使用 -
标志左对齐。
void print(char *first, char *last, int age, char gender)
{
int len = strlen(first) + strlen(last) + 1;
char name[len+1];
strcpy(name, first);
strcat(name, " ");
strcat(name, last);
printf("%-20s %2d %c\n",name, age, gender);
}
使用您的样本输入,输出:
Foo Foo 15 M
Bob Bob 16 F
John John 12 M
关于c - 多个格式说明符的 printf 对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41915473/