va_list
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 ( ... ){}
}
#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"};
va_list的更多相关文章
- va_list结构体
http://stackoverflow.com/questions/4958384/what-is-the-format-of-the-x86-64-va-list-structure 这是我在st ...
- 详细!交叉编译时 note: the mangling of 'va_list' has changed in GCC 4.4解决办法
为什么要在标题前面加了详细两个字,就是为了吸引看文章的你还有写文章的我这种小白,我是从坑里面爬出来了. 废话少说.... 问题就是这样子了,至于解决办法,在网上搜索了很久,大多数以一段英文作为解决办法 ...
- 《OOC》笔记(3)——C语言变长参数va_list的用法
<OOC>笔记(3)——C语言变长参数va_list的用法 C语言中赫赫有名的printf函数,能够接受的参数数目不固定,这就是变长参数.C#里也有params这个关键字用来实现变长参数. ...
- va_list深究
va_list深究 2011-04-21 21:06:11| 分类: C/C++|字号 订阅 VA函数(variable argument function),参数个数可变函数,又称可变参数 ...
- C++省略参数(va_list va_start va_arg va_end)的简单应用
原文参考自:http://www.cnblogs.com/hanyonglu/archive/2011/05/07/2039916.html #include <iostream> #in ...
- va_list/va_start/va_arg/va_end深入分析【转】
转自:http://www.cnblogs.com/justinzhang/archive/2011/09/29/2195969.html va_list/va_start/va_arg/va_end ...
- 不定参数的传递VA_LIST的用法
VA_LIST的用法:(1)首先在函数里定义一具VA_LIST型的变量,这个变量是指向参数的指针: (2)然后用VA_START宏初始化变量刚定义的VA_LIST变量,使其指向第一个可 变参数的地址: ...
- linux C中va_list用法
#include <stdio.h> #include <stdarg.h> int demo( int, ... ); int main( void ) { demo(1, ...
- 对C语言中va_list,va_start,va_arg和va_end的一点理解
这几个函数和变量是针对可变参数函数的,什么是可变参数函数呢,最经典的莫过于printf和scanf,这两个函数的声明如下: int printf(const char *format, ...); i ...
- 【转载】va_list 可变参数 简介 va_copy vprintf
[说明]本文转载自 smart 的文章 http://blog.sina.com.cn/s/blog_590be5290100qhxr.html 及百度百科 va_list是一个宏,由va_star ...
随机推荐
- 报错:LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
参考原文:http://bbs.csdn.net/topics/390121452 项目>属性>配置属性>清单工具>输入和输出>嵌入清单:原来是“是”,改成“否” 如果上 ...
- Azure School,让你系统化快速学习人工智能
要说目前最热门的技术,非人工智能莫属了,让计算机程序能够看懂.听懂.读懂.理解我们的世界!想想就激动!! 上至高大上的个人数字化助理,下至P图软件,各种应用都开始增加AI相关的功能,试问又有哪个技术爱 ...
- linux 命令——27 chmod
chmod命令用于改变linux系统文件或目录的访问权限.用它控制文件或目录的访问权限.该命令有两种用法. 一种是包含字母和操作符表达式的文字设定法: 另一种是包含数字的数字设定法. Linux系统中 ...
- Codeforces Round #327 (Div. 2) B Rebranding(映射)
O(1)变换映射,最后一次性替换. #include<bits/stdc++.h> using namespace std; typedef long long ll; ; char s[ ...
- hdu-3549 Flow Problem---最大流模板题(dinic算法模板)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3549 题目大意: 给有向图,求1-n的最大流 解题思路: 直接套模板,注意有重边 传送门:网络流入门 ...
- CYUSB
/*Summary The application cydesc is used to open the device with cypress GUID and get the device des ...
- fstatfs/statfs详解
[fstatfs/statfs系统调用] 功能描述: 查询文件系统相关的信息. 用法: #include <sys/vfs.h> /* 或者 <sy ...
- js点击拉拽轮播图pc端移动端适配
<div class="content"> <button class="left">left</button> <b ...
- react 的虚拟dom
前端优化的主要方面就是减少页面的DOM操作,减少重排和重绘,React在这方面做了优化,采用了所谓的虚拟DOM,其实我们平时也会遇到虚拟DOM,只是你没有注意罢了,请听我娓娓道来. 所谓的虚拟DOM ...
- POJ 2774 后缀数组 || 二分+哈希
Long Long Message Time Limit: 4000MS Memory Limit: 131072K Total Submissions: 35607 Accepted: 14 ...