如何使用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的名字较长,它会将下一个说明符向下推。我希望它们对齐,以便每一行都按顺序排列。
答案 0 :(得分:0)
将名字和姓氏复制到临时字符串中。然后将其传递给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