При тестировании с использованием MS Visual Studio 10 получается строка 811 из
sprintf(buf, "%.*f", 500, -DBL_MAX);
Конечно, более длинные строки возможны с более высокими значениями точности.
Но оставаясь с "% f"Максимальное количество символов, выводимых для «\ 0»: 317 + 1.
То есть для переносимого кода:
#include <float.h>
#include <stdio.h>
char buf[1/*'-'*/ + (DBL_MAX_10_EXP+1)/*308+1 digits*/ + 1/*'.'*/ + 6/*Default? precision*/ + 1/*\0*/];
sprintf(buf, "%f", -DBL_MAX);
Функция printfloat (число с плавающей запятой) - единственный параметр «число»float и ограничен диапазоном float, преобразуется в double при передаче в sprintf ().Это максимальное значение, таким образом, FLT_MAX.Таким образом, максимальное количество выводимых символов составляет 47 + 1 для '\ 0'.
char buf[1/*'-'*/ + (FLT_MAX_10_EXP+1)/*38+1 digits*/ + 1/*'.'*/ + 6/*Default? precision*/ + 1/*\0*/];
sprintf(buf, "%f", -FLT_MAX);