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