가변 인자를 받아 해석해 출력하는 예제
#include <stdio.h>
#include <stdarg.h> // 가변 인자 함수를 사용하기 위해 필요
void parse_args(char *fmt, ...);
int main()
{
parse_args("%d", 7);
parse_args("%f", 3.14);
parse_args("%s is %d years old.", "Smith", 22);
}
void parse_args(char *fmt, ...)
{
int d;
double f;
char *str;
va_list ap; // 가변 인자를 처리해주는 리스트
printf("format string: %s\n", fmt);
printf("parsed string: ");
/* 가변 리스트의 시작 */
va_start(ap, fmt);
while (*fmt) {
if (strncmp(fmt, "%d", 2) == 0) { // 정수인 경우
d = va_arg(ap, int);
printf("%d", d);
fmt+=2;
}
else if (strncmp(fmt, "%f", 2) == 0) { // 실수인 경우
f = va_arg(ap, double);
printf("%lf", f);
fmt+=2;
}
else if (strncmp(fmt, "%s", 2) == 0) { // 문자열인 경우
str = va_arg(ap, char *);
printf("%s", str);
fmt+=2;
}
else {
printf("%c", *fmt);
fmt++;
}
}
va_end(ap);
/* 가변 리스트의 끝 */
printf("\n\n");
}
-----------------------------------------------
Result
format string: %d
parsed string: 7
format string: %f
parsed string: 3.140000
format string: %s is %d years old.
parsed string: Smith is 22 years old.
'EMBEDDED > SYSTEM Proc' 카테고리의 다른 글
[Normal] 조건부 컨파일 (0) | 2012.07.13 |
---|---|
[Normal] 비트필드 예제 (0) | 2012.07.13 |
[Network] 일대일 채팅 프로그램 (1) | 2012.07.13 |
[Network] 다수의 Client와의 Networking (0) | 2012.07.13 |
[Network] UDP 예제 sendto(),recvfrom() (1) | 2012.07.13 |