printf中的\t表示的是制表符,能有很好的实现列对齐。
对齐的规则是,在\t之前的内容的大小为n,若n不是8的倍数,对其在右侧空格补齐为8的倍数,如果大小正好是8的倍数,则右侧再补8个空格。
#include
int main()
{
printf("name\tChinese\tMatch\tEnglish\n");
printf("%s\t%d\t%d\t%d\t\n", "LiMing",99, 100, 100);
printf("%s\t%d\t%d\t%d\t\n", "SunHong",90, 88, 96);
printf("%s\t%d\t%d\t%d\t\n", "WangJing",99, 95, 98);
}
打印效果如下
但有些情况出现了我们不高兴的情况
由于 “WangJing”是8个字符,再使用制表符之后,又加了8个空格,造成了上下没有对齐。对于这种我们可以指定占用的宽度,以及补空格的方式。
如d,s,f ,指定输出宽度为10,不足则左侧补空格,也就是右对齐
如%-10d,%-10s,%-10f ,指定输出宽度为10,不足则右侧补空格,也就是左对齐
我们将每一列都指定为10个宽度,由于制表符的作用,每一列实际宽度为16
#include
int main()
{
printf("%-10s\t%-10s\t%-10s\t%-10s\n", "Name", "Chinese", "Math", "English");
printf("%-10s\t%-10d\t%-10d\t%-10d\t\n", "LiMing",99, 100, 100);
printf("%-10s\t%-10d\t%-10d\t%-10d\t\n", "SunHong",90, 88, 96);
printf("%-10s\t%-10d\t%-10d\t%-10d\t\n", "WangJing",99, 95, 98);
}