Почему приведенный ниже код не производит вывод? Я ожидал, что это будет 42 s
, Как это исправить?
#include <cstdio>
#include <cstdlib>
#include <cstdarg>
void foo(const char* format, ...)
{
va_list args;
va_start(args, format);
printf(format, args);
va_end(args);
}
int main()
{
foo("%d %s\n", 42, "s");
return 0;
}
На самом деле, он производит http://codepad.org/k7ld231E.
Почему foo
неправильно?
Вам нужно использовать vprintf
вместо: int vprintf( const char* format, va_list vlist );
vprintf(format, args);
printf()
и друзья для нормального использования. vprintf()
и друзья для, когда вы хотите написать свой собственный printf()
-подобные функции.
Других решений пока нет …