当我尝试在C中打印漂亮时,我似乎无法正确对齐。我已经尝试了很长时间,并且无法在网上找到任何帮助。 有人可以解释一下为什么这不起作用而我应该做些什么呢?
我希望正确对齐它们.. This is how it looks
printf("%-20s%s %-22s%-12d"
"%-12s%-12s%-12s%-12s\n",
cyclist[i]->race_name, cyclist[i]->first_name, cyclist[i]->last_name, cyclist[i]->age,
cyclist[i]->team, cyclist[i]->nation, cyclist[i]->placement, cyclist[i]->race_time);
标题打印
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");
}
答案 0 :(得分:0)
您为标题"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, ...);
现在标题和数据打印输出的格式都是一样的。
答案 1 :(得分:0)
第二个%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(full_name, "%s %s", first_name, last_name)
答案 2 :(得分:0)
使用姓氏和名字制作一个字符串。
这样做:
printf("%-20s%-27s%-12d"
"%-12s%-12s%-12s%-12s\n",
"race_name", "first_name last_name", 25,
"team", "nation", "placement", "race_time");