0

我试图找出在 C 中动态更改格式字符串而不打开不受控制的格式字符串漏洞的最佳方法。

我在一个结构中有数据,其中包含浮点数和一个无符号整数,它对应于打印的有效数字的数量。

我想使用整数动态生成格式字符串的精度,以便:

3生成"%.3g"

21生成"%.21g"

有没有一种安全的方法可以做到这一点,而无需将我的代码开放给漏洞利用?

4

1 回答 1

1

是的,你很幸运。您需要使用格式字符串中的精度字段。在那里,您可以提供一个.*符号并提供相应的整数参数来保存精度的值。

您可以使用以下模式来实现这一点,例如printf().

 printf("%.*g", int_precision, decimal_to_print)
于 2015-07-08T17:29:31.070 回答