C语言可变参数处理

本文介绍了C语言中处理可变参数的方法,包括使用va_list、va_start、va_end等宏进行参数的读取和处理,并通过三个示例函数展示了如何实现简单的可变参数打印功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C语言可变参数获取及其简单处理:

#include "stdafx.h"

#include <string.h>
#include <stdlib.h>
#include <stdarg.h>

#define MYPRINTF(a, format, ...) \
    do \
    { \
        char* str = (char*)malloc(128); \
        sprintf(str, format, __VA_ARGS__); \
        printf("MYPRINTF --> %s", str); \
    } \
    while(0)

void myPrintf(int i, char *format, ...)
{
    va_list arg_list;
    va_start(arg_list, format);
    vprintf(format, arg_list);
    va_end(arg_list);
}

void myPrintf1(int i, char *format, ...)
{
    char msg[256];
    va_list arg_list;
    va_start(arg_list, format);
    vsnprintf(msg, sizeof(msg), format, arg_list);
    va_end(arg_list);

    printf("myPrintf1 --> %s", msg);
}

int _tmain(int argc, _TCHAR* argv[])
{
    
    MYPRINTF(1, "hello, %d, %d, %s\n", 1, 1, "test");
    myPrintf(1, "hello, %d, %d, %s\n", 1, 2, "test");
    myPrintf1(1, "hello, %d, %d, %s\n", 1, 3, "test");

    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值