void Log( const TCHAR *pszFormat, ... )
{
TCHAR buf[] ;
va_list arglist ; try
{
_tcscpy_s ( buf, , _T("\n") ) ;
va_start(arglist, pszFormat) ;       //   Type xx = va_arg( arglist, Type );
      //依次获取指定参数,定义类型必须相同
_vstprintf_s(&buf[_tcslen(buf)], -_tcslen(buf), pszFormat, arglist) ;
va_end(arglist) ;
_tprintf ( buf ) ;
}
catch ( ... ){}
}
 
INTSIZEOF 宏,获取类型占用的空间长度,最小占用长度为int的整数倍:
#define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )
VA_START宏,获取可变参数列表的第一个参数的地址(ap是类型为va_list的指针,v是可变参数最左边的参数):
#define va_start(ap,v) ( ap = (va_list)&v + _INTSIZEOF(v) )
VA_ARG宏,获取可变参数的当前参数,返回指定类型并将指针指向下一参数(t参数描述了当前参数的类型):
#define va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )
VA_END宏,清空va_list可变参数列表:
#define va_end(ap) ( ap = (va_list)0 )
 
2. 格式化注意% 字符串
#include "stdafx.h"
#include <stdarg.h> unsigned int net_Printf(const char *psz_fmt, ... )
{
char psz [4096] = {0}; va_list args;
va_start( args, psz_fmt ); int i_size = vsprintf( psz, psz_fmt, args );
printf("%s", psz); if( i_size == -1 )
return -1; va_end( args ); return 0;
} int _tmain(int argc, _TCHAR* argv[])
{ char str[4096] = {"abcd%12%3s%20d"};
net_Printf(str); return 0;
}

  结果输出:“0x0012de7c "abcd%3s                   0"

解析:"abcd%12%3s%20d"

  • "%12%" 将会变为”%“,第一个%号转义,12 表示 在"%"和字母之间插进数字表示最大场宽。
  • "3s" 直接显示
  • "%20d" 20表示最大宽度,默认空格填充了,%d 默认0显示。

如是想获得原串,可以加 %转义,

char str[4096] = {"abcd%%12%%3s%%20d"};

 

最新文章

  1. 【CSS】理解CSS
  2. 数据结构和算法 &ndash; 7.散列和 Hashtable 类
  3. SQL语句调优-基础知识准备
  4. AEAI HR V1.5.1升级说明,开源人力资源管理系统
  5. Mysql操作笔记(持续更新)
  6. MySql 分组排序取时间最大的一条记录
  7. css之选择器
  8. 使用mysql作为hive的元数据库
  9. Easyui获取数据库date数据的显示
  10. OP(Over-provisioning)预留空间
  11. [Codecademy] HTML&amp;CSS第八课:Design a Button for Your Webwite
  12. uva 10817 - Headmaster&#39;s Headache ( 状态压缩dp)
  13. UIImage图片拉伸方法
  14. onload和ready的区别
  15. Kitty猫基因编码
  16. CSS的display:table
  17. 如何解决分配到Autoconfiguration IPV4 地址
  18. &quot;No entity found for query&quot;(转)
  19. 基于WCF的支持跨局域网可断点续传的大文件传输服务实现
  20. Kettle 和数据建模的几个学习资料

热门文章

  1. BZOJ3624: [Apio2008]免费道路(最小生成树)
  2. python随笔---录入月份的值,输出对应的季节
  3. localstorage本地存储的应用
  4. 【干货】JavaScript DOM编程艺术学习笔记10-12【完】
  5. Android 常用RGB值及名称
  6. webapplication发布
  7. EEC 欧姆龙PLC输入模块算法
  8. 微软高性能缓存AppFabric (一) 安装
  9. linux 命令——37 date (转)
  10. Netweaver和CloudFoundry里的trace开关