Почему бы просто не сделать ваш буфер достаточно большим, чтобы вместить максимально возможное строковое представление типа double?
Предполагается, что 64-битное удвоение использует стандарт IEEE для арифметики с плавающей запятой, который использует 52 бита для мантиссы: 2 ^ 52 = 4,503,599,627,370,500 Итак, нам нужно 16 символов для хранения всех цифр до и после десятичной точки. 19 с учетом десятичной точки, знака и нулевого терминатора.
Я бы просто использовал размер буфера не менее 20 символов и пошел бы дальше.
Если вам нужно напечатать двойное число с использованием научной записи, вам нужно будет добавить достаточно места для экспоненты. Предполагая, что показатель степени со знаком 11 битов, это еще 4 символа для показателя степени плюс знак для показателя степени и буква «E». Я бы просто использовал 30 символов в этом случае.