2014-02-14 189 views
-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://codepad.org/k7ld231E
为什么foo错了?

+0

为什么不使用'printf()'? – herohuyongtao

+5

使用vprintf .... –

+0

@herohuyongtao它只是一个例子。 –

回答

2

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

vprintf(format, args); 

printf()和朋友的正常使用。​​和朋友是当你想写自己的printf()类功能。

相关问题