#include <printf.h> #include <wchar.h> static bool swprintfhelp(void* pContext, const wchar_t* str, dword len) { wchar_t** buffer = (wchar_t**) pContext; wcscpy(*buffer, str); *buffer += len; return true; } //! Copies a formatted string to a buffer, given a va_list of arguments. /*! * Use this function instead of swprintf() when a va_list is used, rather * than a variable list of parameters in the argument list. * \param fmt The string to be processed. Conforms to normal wprintf() * specifications. * \param ptr A va_list of the arguments that control the output. * \return The total number of characters copied. */ int vswprintf(wchar_t *buffer, const wchar_t *format, va_list argptr) { return dowprintf(swprintfhelp, &buffer, format, argptr); } //! Copies a formatted string to a buffer. /*! * \param fmt The string to be processed. Conforms to normal wprintf() * specifications. * \param ... Arguments that control the output. * \return The total number of characters copied. */ int swprintf(wchar_t *buffer, const wchar_t *format, ...) { va_list ptr; int ret; va_start(ptr, format); ret = vswprintf(buffer, format, ptr); va_end(ptr); return ret; }