C 无法正确对齐printf代码

C 无法正确对齐printf代码,c,styles,alignment,printf,C,Styles,Alignment,Printf,当我尝试用C语言打印时,我似乎无法使它正确对齐。我已经尝试了很长一段时间,但一直无法在网上找到任何帮助。 有人能解释一下为什么这不起作用,我应该怎么做 我想把它们正确地对齐。。 页眉打印 void print_header(){ printf("-------------------------------------------------------------------------------------------------------\n"); printf("%-20s%-27

当我尝试用C语言打印时,我似乎无法使它正确对齐。我已经尝试了很长一段时间,但一直无法在网上找到任何帮助。 有人能解释一下为什么这不起作用,我应该怎么做

我想把它们正确地对齐。。

页眉打印

void print_header(){
printf("-------------------------------------------------------------------------------------------------------\n");
printf("%-20s%-27s%-12s%-12s%-12s%-12s%-12s\n", "RACE NAME", "FULDE NAVN", "ALDER", "HOLD", "NATION", "PLADS", "TID");
printf("-------------------------------------------------------------------------------------------------------\n");
}

您可以将
“FULDE NAVN”
打印为标题的
“%-27s”
。但是将名字和姓氏打印为
“%s%-22s”
。这些格式不一样,如果名字超过4个字符,就会出现问题

我建议您为全名列创建一个临时字符串,并将其作为单个字符串打印

也许像

char full_name[28];
snprintf(full_name, sizeof(full_name), "%s %s",
    cyclist[i]->first_name, cyclist[i]->last_name);

printf("%-20s%-27s%-12d%-12s%-12s%-12s%-12s\n",
    cyclist[i]->race_name, full_name, cyclist[i]->age, ...);

现在,标题和数据打印输出的格式将相同。

第二个
%s
中没有数字

printf("%-20s%s %-22s%-12d"
   "%-12s%-12s%-12s%-12s\n",
应改为

printf("%-20s%10s %-22s%-12d"
   "%-12s%-12s%-12s%-12s\n",
然后,当然,标题的其余部分需要对齐


我的建议是:a)将formatStr保存为一个变量,该变量与行的标题使用的变量相同;b)将名称格式化为自己的字符串
sprintf(全名,“%s%s”,first\u name,last\u name)

使用first和last name创建一个字符串

这样做:

printf("%-20s%-27s%-12d"
   "%-12s%-12s%-12s%-12s\n",
   "race_name", "first_name last_name", 25,
   "team", "nation", "placement", "race_time");

我发现这和我的名字和姓氏都有关系。。。删除其中一个会使列表对齐,但似乎无法使两者同时存在。。。。。
printf("%-20s%-27s%-12d"
   "%-12s%-12s%-12s%-12s\n",
   "race_name", "first_name last_name", 25,
   "team", "nation", "placement", "race_time");