我发现了打印非终止固定长度字符串的有趣格式,如下所示:
char newstr[40] = {0};
sprintf(newstr,"%.*s", sizeof(mystr), mystr);
所以我想也许在 printf 命令下有一种方法可以打印一个浮点数......
“%8.2f”
能够选择整数的小数位数。
像这样的东西:
sprintf(mystr, "%d %f", numberofdecimals, floatnumbervalue)
您也可以使用".*"
浮点数,另请参阅http://www.cplusplus.com/reference/cstdio/printf/(指 C++,但格式说明符类似)
.number:对于 a、A、e、E、f 和 F 说明符:这是要在小数点后打印的位数(默认为 6)。
...
.*:精度未在格式字符串中指定,而是作为必须格式化的参数之前的附加整数值参数。
例如:
float floatnumbervalue = 42.3456;
int numberofdecimals = 2;
printf("%.*f", numberofdecimals, floatnumbervalue);
输出:
42.35
如果由于某种原因,您的实际 C 库不支持浮点格式的可变精度和宽度,那么构建您自己的格式字符串并不难:
char fmt[6 + 3*(sizeof width + sizeof precision)]; /* sufficient space */
sprintf(fmt, "%%%d.%df\n", width, precision);
printf(fmt, value);
当然,这是有代价的,但是 - 根据您的情况 - 这可能是集中式的。