Эквивалент _vscprintf на Android?

_vscprintf недоступен на Android. Кроме того, vsprintf(NULL, fmt, ap) не работает (производит seg fault), поэтому, похоже, нет способа вычисления размера буфера, необходимого для успеха vsnprintf?

Android источники показывают, что функция __android_log_print просто обрезает строки до 1024, используя vsnprintf...

Как вы справляетесь с этим сценарием?

Ответ 1

Раздел [7.19.6.13]. Функция vsprintf - стандарта C99 не указывает, что выходной буфер может быть NULL.

Вероятно, вы хотите использовать vsnprintf:

int len = vsnprintf(NULL, 0, fmt, ap)

Если вызов успешный, возвращаемое значение - это количество символов, которое было бы написано, если буфер был достаточно большим, за исключением терминатора NUL. Это похоже на _vscprintf, который также не включает в себя NUL-терминатор.