stdarg.h 让函数能够接收不定量参数

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值