_vscprintf相当于Android?

_vscprintf在Android上不可用。 另外vsprintf(NULL, fmt, ap)不起作用(产生seg错误),所以似乎无法计算vsnprintf成功所需的缓冲区大小?

Android 源代码表明__android_log_print函数只是使用vsnprintf将字符串截断为1024 …

你如何处理这种情况?

[7.19.6.13] – C99标准的vsprintf函数 – 未声明输出缓冲区可能为NULL

您可能想要使用vsnprintf

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

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