_vscprintf相当于Android?

时间:2011-10-19 17:46:28

标签: android c android-ndk printf

Android上无法使用

_vscprintfvsprintf(NULL, fmt, ap)也不起作用(产生seg错误),所以似乎无法计算vsnprintf成功所需的缓冲区大小?

Android sources表示__android_log_print函数只是使用vsnprintf将字符串截断为1024 ...

你如何处理这种情况?

1 个答案:

答案 0 :(得分:12)

部分[7.19.6.13] - C99标准的vsprintf函数没有说明输出缓冲区可能是NULL

您可能想要使用vsnprintf

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

如果调用成功,则返回值是缓冲区足够大时将写入的字符数,不包括NUL终止符。这类似于_vscprintf,它的计数中也不包括NUL终止符。