-5

我正在尝试在 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,如果有帮助的话:)

4

1 回答 1

2

该格式%4.1f表示“使用至少四个字符的宽度打印fps,小数点后有一位数字”。

你总是在小数点前至少有一个数字,小数点后有一个数字,小数点后至少有一个数字,这至少是请求的四个chars 中的三个。如果 的值fps介于 0(包括)和 10(不包括)之间,您将获得一个填充空间,否则没有。

如果你想要四个字符,包括小数点%6.1f的填充,你需要,因为两个位置用于点和后面的数字。

于 2013-06-03T11:39:09.967 回答