我正在尝试使用C ++中的sprintf创建一个格式化的字符串(实际上是一个char数组)。
输入变量是浮点值float fps
,未指定的整数unsinged int timeStepCount
和要写入char out[256]
的缓冲区。
我打电话给sprintf如下:
sprintf(out, "%4.1f FPS %10d time steps", fps, timeStepCount);
timeStepCount
格式正确(当数字短于十位时添加空格)但fps
不是。它只能获得实际需要的数字。我忘记了什么吗?
我正在使用Visual Studio 2008,如果这有帮助:)
答案 0 :(得分:2)
格式%4.1f
使用至少四个字符的宽度表示“打印fps
”,小数点后面有一位数。“
在小数点前,小数点后面至少有一位数,小数点后面至少有一位数,即所请求的四个char
中至少有三位数。如果fps
的值在0(包括)和10(不包括)之间,则会得到一个填充空间,否则没有。
如果你需要四个字符,包括小数点前的填充,你需要%6.1f
,因为这两个地方用于点和后面的数字。