所需的函数参数不固定,需要用到带有可变参数的函数,类似printf();项目中需要打印信息等也会用到带可变参数的函数。

  •   C语言标准库的头文件 #include<stdarg.h>包含一组能够遍历可变长参数列表的宏,如下:
 1 /*
2 va_list 用来定义一个指针变量,该指针变量表示参数列表中的各个参数;
3 */
4 va_list ap;
5
6 /*
7 初始化指针变量,ap指向函数参数列表中的第一个可选参数,v是第一个可选参数之前的固定参数
8 */
9 va_start(ap,v);
10
11 /*
12 返回参数列表中指针ap所指的参数,返回类型为type,并让ap指向参数列表的下一个参数
13 */
14 va_arg(ap,type);
15
16 /*
17 清空参数列表,并置指针无效
18 */
19 va_end(ap);

打印信息参考如下:

 1 void addLog(const char* log, ...)
2 {
3 char chLog[8000];
4 va_list ap;
5 va_start(ap, log);
6 int ilength = vsprintf_s(chLog, log, ap);
7 chLog[ilength] = 0;
8 va_end(ap);
9
10 SYSTEMTIME st;
11 GetLocalTime(&st);
12 string szFile = "D:TestLog\\log.txt";
13 fstream fLog;
14 fLog.open(szFile.c_str(), ios::app | ios::in);
15 fLog << st.wYear << "-" << st.wMonth << "-" << st.wDay << " " << st.wHour
16 << ":" << st.wMinute << ":" << st.wSecond << " " << chLog << endl;
17
18 fLog.close();
21 }

使用:

const char* chLog = "WH WIN";
addLog("%s!", chLog);

参考:https://www.cnblogs.com/zhaobinyouth/p/8781915.html

最新文章

  1. HDU-1274 展开字符串
  2. 利用Jquery的load函数实现页面的动态加载
  3. [CTO]创业团队CTO应具备的素质
  4. 备忘录 - numpy基本方法总结
  5. 卡通投掷游戏ios源码
  6. 如何给10^7个数据量的磁盘文件排序--bitset
  7. jQuery基础学习5——JavaScript方法获取页面中的元素
  8. C# 代理HTTP请求
  9. js、jQuery操作input大全 不断完善
  10. Spring.NET学习笔记
  11. CoreAnimation
  12. 喜欢的女生快被别人抢走了,我敢怎么抢? - V2EX
  13. WebView高危接口安全检测
  14. R系列:分词、去停用词、画词云(词云形状可自定义)
  15. 高斯消元 &amp; 线性基【学习笔记】
  16. django-rest-framework之基于类的视图
  17. 《Serverless架构-无服务单页应用开发》读后感
  18. html5新特性学习笔记
  19. 58.纯 CSS 创作一只卡通鹦鹉
  20. CButtonST|CUniButton等按钮类的使用

热门文章

  1. JDK的下载与安装-环境变量的配置
  2. MyBatis的使用七(处理表与表之间的关系)
  3. flex实现圣杯布局
  4. elasticsearch之日期类型有点怪
  5. STM32F4库函数初始化系列:DMA串口接收
  6. Istio 升级后踩的坑
  7. 叠堆柱状图(带折线版+2y轴)
  8. JZOJ 3889
  9. Connect-The-Dots
  10. redis(10)事务和锁机制秒杀