c - 多个格式说明符的 printf 对齐

标签 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 较长,它会将下一个说明符向下推一点。我希望它们对齐,以便每一行都按顺序排列。

最佳答案

将名字和姓氏复制到一个临时字符串中。然后将其传递给 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/

相关文章:

c - 打印 union 值的怪癖

printf - 使用 fflush(stdout) 作为 fprintf() 参数安全吗?

c - 如何将字符数组 "char *buff[]"写入 c 中的文件

c - 使用多维数组添加两个矩阵时出现问题

c - 获取 $$ 来保存 $1 和 $2 的串联

ios - 对齐自定义绘图中的文本

c - C删除链表中的第一个节点

css - 我如何使跨度对齐

android - 如何对齐在android线性布局水平方向上对齐的项目?

c - 如何在C程序中分离这个数字-51.235