printf alignment用于多个格式说明符

时间:2017-01-28 22:20:03

标签: c alignment printf

如何使用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的名字较长,它会将下一个说明符向下推。我希望它们对齐,以便每一行都按顺序排列。

1 个答案:

答案 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