Написание модуля для преобразования списка неназванных аргументов в строку Выход не является желаемым._vsnwprintf_s не работает по желанию
void FormatOutput(wchar_t* formatstring, ...)
{
wchar_t buffer[1024];
memset(buffer, 0, sizeof(buffer));
size_t size = lstrlenW(formatstring);
va_list args;
va_start(args, formatstring);
size = _vsnwprintf_s(buffer, _countof(buffer), _TRUNCATE, formatstring, args);
buffer[size] = L'\0';
if (size < 0)
__debugbreak();
printf("size: %d, buff: %ls\n", size, buffer);
}
Вызов модуля, как показано ниже
FormatOutput(L"%s %d %d %f %c", "34", 23,34,10.23,'c');
Выход:
size: 19, buff :
Чего не хватает в реализации?
Какой компилятор/библиотека? –
@Matt Исправление в формате параметров исправило проблему. Я использую VS2013. – control
BTW Почему вы инициализируете 'size'' 'lstrlenW (formatstring)'? Исходное значение, похоже, не используется. – user4815162342