c语言
va_satrt和va_end函数介绍
头文件:#include <stdarg.h>
函数原型:void va_start(va_list ap, last) 和 void va_end(va_list ap);
可以被参数数量和类型可变的函数调用。
可变参数用…(3个省略号表示可变参数列表)
参数含义:
ap :这是一个 va_list 类型的对象,它用来存储通过 va_arg 获取额外参数时所必需的信息。
last :最后一个传递给函数的已知的固定参数
例程
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
static void func(char *cmd_expr,...)
{
char *p = malloc(100);
if(p==NULL)
{
return;
}
va_list args;
va_start(args, cmd_expr);
vsnprintf(p, 100 ,cmd_expr, args);
va_end(args);
printf("%s\r\n",p);
if(p!= NULL)
{
free(p);
}
}
int main(int argc,char **argv)
{
func("fmt=\"%s\"",argv[1]);
func("fmt=\"%s\",\"%s\"",argv[1],argv[2]);
return 0;
}
测试结果
按照指定格式输出