'가변인자'에 해당되는 글 1건

  1. 2008.08.27 가변인자 함수를 이용하여 print 와 add 만들기
      가변인자 함수 print 와 add 를 만들어 본다.


      1 #include <stdio.h>
      2 #include <stdarg.h>
      3
      4 void print(char *format, ...);
      5 void add(char *format, ...);
      6
      7 int main()
      8 {
      9         char ch = 'A', *name = "kingdom";
     10         int age = 23;
     11         float height = 173.5;
     12
     13         print("%c \n", ch);
     14         add("%c \n", ch);
     15
     16         print("%c, %d \n", ch, age);
     17         add("%c, %d\n", ch, age);
     18
     19         print("%c, %d, %s\n", ch, age, name);
     20         add("%c, %d, %s\n", ch, age, name);
     21
     22         print("%c, %d, %s, %f\n", ch, age, name, height);
     23         add("%c, %d, %s, %f\n", ch, age, name, height);
     24
     25         return 0;
     26 }
     27
     28 void print(char *format, ...)
     29 {
     30         int i;
     31         va_list list;
     32         va_start(list, format);
     33
     34         for(i = 0 ; format[i] ; i++)
     35         {
     36                 if(format[i] != '%')
     37                         printf("%c", format[i]);
     38                 else
     39                 {
     40                         switch(format[++i])
     41                         {
     42                                 case 'c' : printf("%c", va_arg(list, int));
     43                                            break;
     44                                 case 'd' : printf("%d", va_arg(list, int));
     45                                            break;
     46                                 case 'f' : printf("%f", va_arg(list, double));
     47                                            break;
     48                                 case 's' : printf("%s", va_arg(list, char*));
     49                                            break;
     50                                 default : printf("출력할 자료형 형식이 없습니다.\n");
     51                         }
     52                 }
     53         }
     54         va_end(list);
     55 }
     56
     57 void add(char *format, ...)
     58 {
     59         int i;
     60         double sum = 0;
     61         va_list list;
     62         va_start(list, format);
     63
     64         for(i = 0 ; format[i] ; i++)
     65         {
     66                 if(format[i] == '%')
     67                 {
     68                         switch(format[++i])
     69                         {
     70                                 case 'c' : sum += va_arg(list, int);
     71                                            break;
     72                                 case 'd' : sum += va_arg(list, int);
     73                                            break;
     74                                 case 's' : va_arg(list, char*);
     75                                           break;
     76                                 case 'f' : sum += va_arg(list, double);
     77                                           break;
     78                         }
     79                 }
     80         }
     81         va_end(list);
     82         printf("인수들의 합 : %.2lf\n\n", sum);
     83 }
                 
Posted by 행복한 프로그래머 궁금쟁이박

댓글을 달아 주세요