不定长参数
主页 上一层 获得本机IP 对方连接本机的哪个IP? 如何使用DNS 文件流方式 读取一行语句 不定长参数 以Daemon方式运行 端口重用 用户登录及权限设置

 

如何使用不定长参数?

注意:不定长参数需要使用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');
};