2011-10-19 99 views
4

_vscprintf在Android上不可用。另外vsprintf(NULL, fmt, ap)不起作用(產生seg故障),所以似乎沒有辦法計算vsnprintf成功所需的緩衝區大小?_vscprintf相當於Android?

的Android sources表明__android_log_print功能只是截斷字符串使用vsnprintf 1024 ...

你怎麼處理這種情況?

+3

」vsprintf(NULL,fmt,ap)不起作用(產生seg故障)「:你確定你沒有使用它嗎? – Mat

回答

12

Section [7.19.6.13] - C99標準的vsprintf函數沒有聲明輸出緩衝區可能是NULL

你可能想使用vsnprintf

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

如果調用成功,返回值是如果緩衝區是足夠大的,不包括NUL終止已寫入的字符數。這就像_vscprintf,它的計數中也不包括NUL終止符。 「

+1

我從SO帖子得到了這個建議(http://stackoverflow.com/questions/4785381/replacement-for-ms-vscprintf-on-macos-linux),所以即使我已經閱讀了文檔,我仍然嘗試了它。 。 – miha

+0

感謝您提出這個問題,我忽略了vsnprintf的那部分文檔,我實際上使用它來生成結果字符串。 – miha