堆栈分配的字符串需要有多大才能以 %g 格式存储任何 float/double?
int main()
{
float f;
double d;
char f_str[ ?? ];
char d_str[ ?? ];
sprintf(f_str, "%g", f);
sprintf(d_str, "%lg", d);
}
您可以使用 snprintf() 来计算您的特定值所需的确切长度
int f_len = snprintf(NULL, 0, "%g", f);
char f_str[f_len + 1]; // or malloc...
sprintf(f_str, "%g", f); // it fits