格式化输出 - HeavyYuan/A-CD-Record-Management-System GitHub Wiki

Record,Artist,Track Count 间隔5个空格输出

printf("Record%5cArtist%5cTrack Count\n","","");

//预期输出:
Record     Artist     Track Count

//实际输出:
Record    ?Artist    ?Track Count

原因: 要输出空格,格式字符c 是输出一个字符,其对应的空格符号是‘ ’,而不是“”,“”是字符串,对应的格式字符是s

所以,修改成以下语句可以得到预期输出:

printf("Record%5sArtist%5sTrack Count\n","","");

//或则

printf("Record%5cArtist%5cTrack Count\n",' ',' ');

保持队形输出

首行输出是 Record     Artist     Track Count

每一列之间有5个空格,要求后续的内容输出必需保持队形

实现代码:


//首行输出是
printf("Record%5sArtist%5sTrack Count\n","","");

/*
* 后续输出,只要指定输出宽度,并且设定左对齐,就ok了
* 从上述printf中可以看出,Record和Artist之间间隔5个空格,Artist和Track Count之间间隔5个空格
* 我们只要设定Record列下的内容,宽度是11(Record的宽度+5),Artist列下的内容,宽度也为11,并且左对齐输出,就可以保持首行的队形了。
* 注意:宽度值从当前光标所在位置开始(即不是从行首字符算的)
*/


//综上,有如下实现:

/*
* %s    表示以字符串的形式输出
* %11s  表示输出的字符串宽度是11,默认是右对齐,宽度不够的用空格补充
* %-11s -表示左对齐
*/
printf("%-11s%-11s%d",record1, artist1, 2);



//动态设置宽度
/*
 * 星号表示 动态跨度格式,10就是实际宽度
 * 
 */
printf("%-*s%s\n",10,"what","fuck");