可变参数的实现my_sprintf
2024-08-31 17:47:07
#include "stdafx.h"
#include <stdio.h>
#include <stdarg.h>
void my_sprintf(char *str, char *fomat, ...)
{
char *p = fomat;
char *q;
char ch;
int i = ;
va_list ptr, l_ptr;//实际上是一个char*指针
va_start(ptr, fomat);//ptr指向第一个变参
vprintf(fomat, ptr);
vsprintf(str, fomat, ptr);
l_ptr = ptr;
while (*p != '\0')//数据解析范例va_arg的使用
{
while (*p != '%'&&*p != '\0'){ ++p; }
++p;
if (*(p) == 'd')
{
int a = va_arg(l_ptr, int);//l_ptr指向下一个变参
printf("%d", a);
}
else if (*(p) == 's')
{
q = va_arg(l_ptr, char*);
printf("%s", q);
}
else if (*(p) == 'c')
{
ch = va_arg(l_ptr, char);
printf("%c", ch);
}
}
va_end(ptr);//复位指针
}
int _tmain(int argc, _TCHAR* argv[])
{
char str[];
my_sprintf(str, "%d%c%d%s \n", , 'b', , "hello");
printf("%s", str);
return ;
}
最新文章
- sql 查询表的所有详细信息
- C语言中scanf()的用法!
- CodeForces - 407A
- HDU 2795 Billboard(线段树的另类应用)
- ui方案设计
- 谈谈JPA-04-JPA的常用API
- cocso2d-x改变精灵图片
- asp.net 操作word
- [CSS3 Animation] TweenMax.staggerTo()
- Android SQLITE数据类型
- Python并发编程__多进程
- Android快速实现上传项目到Github
- 【CODEVS 6384 大米兔学全排列】
- ajaxStart()和ajaxStop()
- 区块链名词解析:ICO、IFO、IEO和IMO,分别是什么呢?
- Web开发经验谈之F12开发者工具/Web调试[利刃篇]
- MongoDB的安装与python操作MongoDB
- html 网页代码大全,总结,使用
- [转][C#]Combobox 行高
- screen对象和history对象
热门文章
- COGS——T2084. Asm.Def的基本算法
- 《Java并发编程实战》第五章 同步容器类 读书笔记
- 实习第一天(安装svn管理工具跟tomcat插件)
- 服务器性能监控tips
- How to search Installed Updates
- 初学PHP&;MySQL 2014-05-31 12:40 92人阅读 评论(0) 收藏
- Coderfroces 862 C. Mahmoud and Ehab and the xor
- Python环境搭建—安利Python小白的Python安装详细教程
- android+myeclipse+mysql下拉框数据绑定
- 【Henu ACM Round#17 E】Tree Construction