Ответ 1
Раздел [7.19.6.13]. Функция vsprintf
- стандарта C99 не указывает, что выходной буфер может быть NULL
.
Вероятно, вы хотите использовать vsnprintf
:
int len = vsnprintf(NULL, 0, fmt, ap)
Если вызов успешный, возвращаемое значение - это количество символов, которое было бы написано, если буфер был достаточно большим, за исключением терминатора NUL. Это похоже на _vscprintf
, который также не включает в себя NUL-терминатор.