#include #include void minprintf(char *fmt, ...) { va_list arg_pointer; char *p, *sval; int ival; double dval; va_start(arg_pointer, fmt); for (p = fmt; *p; p++) { if (*p != '%') { putchar(*p); continue; } switch(*++p) { case 'd': ival = va_arg(arg_pointer, int); printf("%d", ival); break; case 'f': dval = va_arg(arg_pointer, double); printf("%f", dval); break; case 's': for(sval = va_arg(arg_pointer, char*); *sval; sval++) putchar(*sval); break; default: putchar(*p); break; } } va_end(arg_pointer); }