为什么下面的代码不会产生任何输出?我预计它会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
错了?
答案 0 :(得分:2)
您需要使用vprintf
代替: int vprintf( const char* format, va_list vlist );
vprintf(format, args);
printf()
和朋友正常使用。当你想编写自己的vprintf()
之类的函数时,printf()
和朋友就可以了。