I need to do two (or more) passes over a va_list
. I have a buffer of some size, and I want to write a formatted string with sprintf into it. If the formatted string doesn't fit in the allocated space I want to double the allocated space and repeat until it fits.
(As a side-note, i would like be able to calculate the length of the formatted string first and allocate enough space, but the only function that I found that can do that is _snprintf, and it is deprecated in VS2005 ...)
Now, so far there are no problems: i use vsnprintf
and call va_start
before each invokation.
But I've also created a function that takes a va_list
as a parameter, instead of "...". Then I cannot use va_start
again! I've read about va_copy
, but it is not supported in VS2005.
So, how would you do this?