-1

为什么下面的代码不产生任何输出?我希望它是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错了?

4

1 回答 1

2

您需要vprintf改用:int vprintf( const char* format, va_list vlist );

vprintf(format, args);

printf()和朋友们正常使用。vprintf()当您想编写自己的printf()类似函数时,和朋友是适用的。

于 2014-02-14T07:19:10.057 回答