当前位置: 首页 > news >正文

va_list、va_start和va_end的用法

c语言提供了函数的不定长参数使用,比如 void func(int a, …)。三个省略号,表示了不定长参数。
va_list
va_list宏定义了一个指针类型,这个指针类型指向参数列表中的参数。
va_start
void va_start ( va_list ap, prev_param );
prev_param:变参表前面的函数
用va_start函数来获取参数列表中的参数
va_end
void va_end(va_list ap)
参数列表访问完以后,参数列表指针与其他指针一样,必须收回

示例:

int printf(const char* fmt, ...)
{   char outbuf[10240];va_list args;int i;//1.将变参转化为字符串va_start(args,fmt);vsprintf((char *)outbuf, fmt, args);va_end();//2. 打印字符串到串口for(i=0;i< strlen((char *)outbuf); i++){putc(outbuf[i]);}return i;
}

vsprintf
int vsprintf(char *str, const char *format, va_list arg)
str – 这是指向一个字符数组的指针,该数组存储了 C 字符串。
format – 这是字符串,包含了要被写入到字符串 str 的文本。它可以包含嵌入的 format 标签,format 标签可被随后的附加参数中指定的值替换,并按需求进行格式化。

http://www.lryc.cn/news/570760.html

相关文章:

  • LAN_IM: 在局域网内实现高效即时通讯的开源解决方案
  • 计算机在线给手机杀毒,怎么用电脑给手机杀毒(如果手机中病毒了怎么办)
  • 如何写一个简单的python类class
  • STM32学习笔记:读写内部Flash(介绍+附代码)
  • 电磁场与电磁波篇---电荷电流
  • 蛋白分析工具和数据库
  • Javascript中void介绍
  • 局域网内共享加密狗_一行Python代码实现同一局域网内的文件共享
  • java.net.SocketException: Broken pipe
  • 科氏质量流量计的工作原理及维护
  • vue前端实现随机验证码(数字、字母混合)功能
  • DLL注入之创建远程线程
  • 【Linux入门指北】磁盘配额管理 实验篇
  • 数字图像处理题库
  • JS获取本地经纬度
  • 人人网主页登录_爬虫(三)使用session来登录人人网
  • php 获取字符串括号,php截取_php利用大括号截取字符的方法
  • 学生学籍管理系统页面源代码html_浙江省中小学学生电子学籍系统https://xjglpt.zjedu.gov.cn/...
  • matlab实现图像变换(傅里叶变换、离散余弦变换)
  • 7. 自定义FileInputFormat
  • STM32 独立按键扫描功能大全-支持连击、组合连击、任意连击
  • 收藏网页
  • Android 组件篇
  • 从小护士到微软中国总经理,逆风飞扬的“打工皇后”吴士宏的传奇人生
  • react native踩坑日记(0): 如何配置 IOS React-native环境
  • 【提高】奶牛和草丛 USACO【C++】
  • 估计随机行走的覆盖面积
  • 基于NEON指令的图像旋转加速【armv7】
  • 基于ssm的学生作业管理系统
  • C#-从入门到精通-第12章 Windows应用程序高级控件