#include <stdio.h> #include <stdarg.h> /* minprintf函数: 带有可变参数表的简化的printf函数 */ void minprintf(char *fmt,...) { va_list ap; /* 将ap指向第一个无名参数 */ char *p, *sval; int ival; double dval; va_start(ap, fmt); for(p = fmt; *p; p++) { if(*p != '%') { putchar(*p); continue; } switch (*++p) { case 'd': ival = va_arg(ap, int); printf("%d", ival); break; case 'f': dval = va_arg(ap, double); printf("%f", dval); break; case 's': for(sval = va_arg(ap, char *); *sval; sval++) { putchar(*sval); } break; default: putchar(*p); break; } } va_end(ap); /* 结束时的清理工作 */ } int main() { minprintf("%s\n","Hello World!"); return 0; }