/* 基本过程:
va_list arglist; //声明一个变量来转换参数列表
va_start(arglist,format); //初始化变量
va_end(arglist); //结束变量列表,和va_start成对使用
可以根据va_arg(arglist,type)取出参数 其中type可以是int,char等等
或 va_start(arglist, format);
status = vsnprintf(buf, 1024, format, arglist); //有些编译器要求写成_vsnprintf
va_end(arglist);
vsnprintf()函数:
int vsnprintf (char *s, size_t size, const char *template, va_list ap)
本函数跟snprintf函数很类似,只是将参数的数目可变的,变成了一个指针的列表。
*/
#include <stdio.h>
#include <stdarg.h>
void simple_va_fun(int start, ...)
{
va_list arg_ptr;
int nArgValue =start;
int nArgCout=0;
va_start(arg_ptr,start);
do
{
++nArgCout;
printf("the %d th arg: %d/n",nArgCout,nArgValue);
nArgValue = va_arg(arg_ptr,int); //指针指向下一个参数
} while(nArgValue != -1);
return;
}
int main(int argc, char* argv[])
{
simple_va_fun(100,-1);
simple_va_fun(100,200,-1);
return 0;
}
/*输出结果:the 1 th arg: 100
the 1 th arg: 100
the 2 th arg: 200
*/