66.4 연습문제: 문자열을 출력하는 가변 인자 함수 만들기

다음 소스 코드를 완성하여 printStrings 함수에 지정된 문자열이 출력되게 만드세요.

practice_variable_argument.c

#include <stdio.h>
#include <stdarg.h>

______________________________________
{
    va_list ap;

    va_start(ap, args);
    for (int i = 0; i < args; i++)
    {
        char *str = va_arg(ap, __________);
        printf("%s ", str);
    }
    va_end(ap);

    printf("\n");
}

int main()
{
    printStrings(2, "C", "Language");
    printStrings(3, "The", "Little", "Prince");

    return 0;
}

실행 결과

C Language
The Little Prince

정답

 void printStrings(int args, ...)
 char *

해설

printStrings를 호출할 때 매개변수로 값을 3개를 넣기도 하고 4개를 넣기도 합니다. 따라서 함수 printStrings는 가변 인자 함수입니다. 함수를 만들 때 void printStrings(int args, ...)와 같이 첫 번째 매개변수는 가변 인자의 개수를 받도록 하고, 두 번째부터 …를 사용하여 가변 인자로 지정하면 됩니다.

printStrings함수에는 "C", "Language"와 같이 문자열을 넣었으므로 va_arg 매크로에는 char *를 지정하여 문자열 포인터를 가져올 수 있도록 만듭니다.