无法正确对齐printf代码
问题描述:
当我尝试在C中打印漂亮时,似乎无法使其正确对齐。我已经尝试了很长一段时间,并且无法在网上找到任何帮助。 有人可以解释为什么这不起作用,我应该做什么呢?无法正确对齐printf代码
我想正确地调整他们.. 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");
}
答
使用先作一个字符串,姓。
这样做:
printf("%-20s%-27s%-12d"
"%-12s%-12s%-12s%-12s\n",
"race_name", "first_name last_name", 25,
"team", "nation", "placement", "race_time");
答
您打印"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",
然后,当然,头部的其余部分将需要排队。
我的建议是,以一)formatStr保存到一个变量的同一个用于标题为行,和b)名称格式化为自己的字符串sprintf(full_name, "%s %s", first_name, last_name)
我发现它有事情做的事实,我既有FIRST_NAME和LAST_NAME ...去除其中的一个进行对齐列表中,但不能似乎使它与双方共事..... – kongen