我正在尝试找出在C中动态更改格式字符串的最佳方法,而不会打开不受控制的格式字符串漏洞。
我在结构中有数据,其中包含浮点数和无符号整数,它对应于打印的有效数字。
我想使用整数来动态生成格式字符串的精度,以便:
3
生成"%.3g"
21
生成"%.21g"
有没有一种安全的方法可以在不打开我的代码的情况下执行此操作?
答案 0 :(得分:1)
是的,你很幸运。您需要使用格式字符串中的precision字段。在那里,您可以提供.*
表示法并提供包含精度值的相应整数参数。
您可以使用以下模式来实现此目的,例如使用printf()
。
printf("%.*g", int_precision, decimal_to_print)