Почему следующий код не производит никакого вывода?

Почему приведенный ниже код не производит вывод? Я ожидал, что это будет 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://ideone.com/EsHsRO

На самом деле, он производит http://codepad.org/k7ld231E.
Почему foo неправильно?

-1

Решение

Вам нужно использовать vprintf вместо: int vprintf( const char* format, va_list vlist );

vprintf(format, args);

printf() и друзья для нормального использования. vprintf() и друзья для, когда вы хотите написать свой собственный printf()-подобные функции.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]