stdarg.h数据类型
类型名称 | 描述 | 相容 |
va_list | 用来保存宏va_arg与宏va_end所需信息 | C89 |
stdarg.h宏
巨集名称 | 描述 | 相容 |
va_start | 使va_list指向起始的参数 | C89 |
va_arg | 检索参数 | C89 |
va_end | 释放va_list | C89 |
va_copy | 拷贝va_list的内容 | C99 |
例一、
#include <stdio.h>
#include <stdarg.h>
void printargs(int arg1, ...) /* 输出所有int类型的参数,直到-1结束 */
{
va_list ap;
int i;
va_start(ap, arg1);
for (i = arg1; i != -1; i = va_arg(ap, int))
printf("%d ", i);
va_end(ap);
putchar('\n');
}
int main(void)
{
printargs(5, 2, 14, 84, 97, 15, 24, 48, -1);
printargs(84, 51, -1);
printargs(-1);
printargs(1, -1);
return 0;
}
这个程序产生输出:
5 2 14 84 97 15 24 48
84 51
1
例二、std::string getString(const char * format, ...)
{
va_list args;
va_start(args, format);
char buf[1024];
_vsnprintf_s(buf, 1024-3, format, args);//将可变参数格式化输出到一个字符数组。
va_end(args);
std::string str(buf);
return str;
}
getString("%s,%d,%d,%d","asd",2,3,4); 输出结果:asd,2,3,4