2014-09-14 5 views
1

이 함수를 만들고 싶지만 매개 변수 목록을이 방법으로 전달할 수 없습니다. 이 문제를 해결하는 적절한 방법은 무엇입니까?C에 전달 ... 매개 변수

그리고 네, 일부 컴파일러는 'asprintf'를 제공합니다. 내 질문은 어떤 기능을 사용해야하는 것이 아니라 오히려 매개 변수가 이처럼 작동하도록하는 방법이다.

// Allocates a formmated string 
char *msprintf(const char *format, ...) 
{ 
    int size = snprintf(NULL, 0, format, ...); 

    char *buf = (char*)malloc(size); 
    snprintf(buf, size, format, ...); 

    return buf; 
} 
+0

"varargs"를 조회하십시오. – keshlam

+0

제한된 경험으로, va_args가 제가 생각하는 유일한 방법입니다. –

+1

http://www.cprogramming.com/tutorial/c/lesson17.html – OldProgrammer

답변

1

통화 중에 vsnprintf()을 사용합니다.

char *msprintf(const char *format, ...) { 
    va_list args; 
    va_start(args, format); 

    int size = vsnprintf(NULL, 0, format, args); 
    char *buf = malloc(size); 
    vsnprintf(buf, size, format, args); 

    va_end(args); 
    return buf; 
}