以下测试代码会产生不需要的输出,即使我使用了宽度参数:
int main(int , char* [])
{
float test = 1234.5f;
float test2 = 14.5f;
printf("ABC %5.1f DEF\n", test);
printf("ABC %5.1f DEF\n", test2);
return 0;
}
输出
ABC 1234.5 DEF
ABC 14.5 DEF
如何实现这样的输出,使用哪种格式字符串?
ABC 1234.5 DEF
ABC 14.5 DEF
答案 0 :(得分:40)
以下内容应该正确排列所有内容:
printf("ABC %6.1f DEF\n", test);
printf("ABC %6.1f DEF\n", test2);
当我跑步时,我得到:
ABC 1234.5 DEF
ABC 14.5 DEF
问题是,在%5.1f
中,5
是为整个号码分配的字符数,1234.5
占用的字符数超过五个。这会导致14.5
与{{1}}不对齐,这符合五个字符。
答案 1 :(得分:8)
您正在尝试打印超过5个字符的内容,因此请将长度指示符放大:
printf("ABC %6.1f DEF\n", test);
printf("ABC %6.1f DEF\n", test2);
第一个值不是“点之前的数字”,而是“总长度”。