为何printf("%-13s\n", name);无法按预期截断字符串?
问题分析与解决
你搞混了printf格式符里数字的作用——%-13s中的13是最小输出宽度,不是最大截断长度。意思是如果字符串长度小于13,会用空格补到13个字符(因为-是左对齐);如果字符串更长,就会完整输出所有字符,不会截断。
要实现截断字符串到指定长度输出,需要用精度控制,格式符写成%.13s(默认右对齐),如果要左对齐同时截断,就用%-13.13s。
修改你的代码中的printf语句即可:
printf("%-13.13s\n", name);
如果不需要对齐,仅需截断输出,直接用:
printf("%.13s\n", name);
内容的提问来源于stack exchange,提问作者Ryan Ta
相关产品推荐
相关产品推荐

