C变参函数其实不难

本文介绍了一个简易版的printf函数实现,使用va_list等宏进行可变参数处理,演示了如何打印不同类型的数据,包括整数、字符和浮点数。

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

//这里给出的是printf的简易实现(非原创)
//按照va_list,va_start,va_copy,va_arg,va_end的顺序使用
//注意:1.void va_start( va_list ap, parmN );第二个参数是你定义的参数列表的最后一个固定参数。2.T va_arg( va_list ap, T );类型T会有c语言的类型提升掺杂其中,如char->int float->double的自动类型转换
#include <stdio.h> #include <stdarg.h>   void simple_printf(const char* fmt, ...) { va_list args; va_start(args, fmt);   while (*fmt != '\0') { if (*fmt == 'd') { int i = va_arg(args, int); printf("%d\n", i); } else if (*fmt == 'c') { // 注意自动转换为整数类型 int c = va_arg(args, int); printf("%c\n", c); } else if (*fmt == 'f') { double d = va_arg(args, double); printf("%f\n", d); } ++fmt; }   va_end(args); }   int main(void) { simple_printf("dcff", 3, 'a', 1.999, 42.5); }

转载于:https://www.cnblogs.com/catgo/p/9967384.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值