2011-10-19 5 views
4

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

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

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

+3

«vsprintf (NULL, fmt, ap) не работает (производит seg fault)»: вы уверены, что не используете его неправильно? – Mat

ответ

12

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

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

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

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

+1

Я получил это предложение от SO post (http://stackoverflow.com/questions/4785381/replacement-for-ms-vscprintf-on-macos-linux), поэтому я попробовал его, хотя я читал документы. – miha

+0

И спасибо за это, я упустил эту часть документации vsnprintf, которую я фактически использую для создания результирующей строки. – miha

Смежные вопросы