|
如何使用不定长参数? 注意:不定长参数需要使用stdarg.h这个头文件。 #include <stdarg.h> #include <stdio.h> void outs(char *fmt, ...) { static char tmp[80]; va_list ap; sprintf(tmp, "%s\r\n", fmt); va_start(ap, fmt); vprintf(tmp, ap); va_end(ap); }; void foo(char *fmt, ...) { va_list ap; int d; char c, *p, *s; va_start(ap, fmt); while (*fmt) switch(*fmt++) { case 's': /* string */ s = va_arg(ap, char *); printf("string %s\n", s); break; case 'd': /* int */ d = va_arg(ap, int); printf("int %d\n", d); break; case 'c': /* char */ /* need a cast here since va_arg only takes fully promoted types */ c = (char) va_arg(ap, int); printf("char %c\n", c); break; } va_end(ap); } void main() { outs("Hello, %s", username); foo("sdc", username, usercount, 'A'); }; |