下面的测试代码产生了一个不需要的输出,即使我使用了一个width参数:
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
发布于 2013-03-07 18:01:03
以下代码应正确排列所有内容:
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
接受的字符数超过5个。这会导致与14.5
不对齐,它只能容纳五个字符。
发布于 2013-03-07 18:01:39
您正在尝试打印比5个字符更宽的内容,因此请将长度说明符设置得更大:
printf("ABC %6.1f DEF\n", test);
printf("ABC %6.1f DEF\n", test2);
第一个值不是“点前的位数”,而是“总长度”。
https://stackoverflow.com/questions/15268088
复制相似问题