2014-02-14 6 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://ideone.com/EsHsRO

사실, 그것은 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()과 친구들은 정상적인 사용을위한 것입니다. vprintf()과 친구들은 자신 만의 printf()과 같은 기능을 쓸 때 유용합니다.

관련 문제