>>673より>>679の案の方がいいね。
ということで>>673を修正。

int *length_snprintf(const char *fmt, ...)
{
va_list arg;
int ret = 0;

va_start(arg, fmt);
ret = vsnprintf(NULL, 0, fmt, arg);
va_end(arg);

return ret;
}

>>679だってbugに気付いてないくらいだから素人と同じ。