1 #include <stdio.h>
2 #include <stdarg.h>
3
4 static void
foo(const char * fmt,...)5 foo(const char *fmt, ...) {
6 va_list va;
7 char *p;
8 va_start(va, fmt);
9
10 for (p = (char *)fmt; *p != 0; ++p) {
11 if (*p == 'f') {
12 double d = va_arg(va, double);
13 printf("%f ", d);
14 } else if (*p == 'd') {
15 double d = va_arg(va, double);
16 printf("%f ", d);
17 } else if (*p == 'i') {
18 int i = va_arg(va, int);
19 printf("%d ", i);
20 } else if (*p == 'l') {
21 long l = va_arg(va, long);
22 printf("%ld\n", l);
23 } else if (*p == 'L') {
24 long double ld = va_arg(va, long double);
25 printf("%Lf\n", ld);
26 } else {
27 putchar(*p);
28 }
29 }
30
31 va_end(va);
32 }
33
34
35 int
main()36 main() {
37 foo("i f f d i l L f l L i d f L l l",
38 128, 133.322f, 432.32f, 53.666, -5822,
39 34212L, 5422.777433L, -4572.22f, 77l, 21.7L,
40 3217, 2216.4123, 25.3f, -422.2L, 444l,
41 11l);
42 }
43
44