首页 > 其他 > 详细

利用可变参实现fprintf函数

时间:2016-02-24 09:45:10      阅读:120      评论:0      收藏:0      [点我收藏+]
#include <stdio.h>
#include <stdarg.h>
/* 
可变参相关接口 
typedef char * va_list ; 
void va_start (va_list ap , prev_param) ;
type va_arg(va_list ap , type) ;
void va_end(va_list ap); 
*/
int myfprintf(FILE* fp, char* fmt, ...)
{
     int ret = 0; 
     va_list args;  //va_list是一个字符串指针,用于获取不确定个数的参数 
     va_start(args,fmt); //读取可变参数的过程其实就是在堆栈中,使用指针,遍历堆栈段中
	 //的参数列表,从低地址到高地址一个一个的把参数内容读出来的过程 
	 
	 //该函数会根据参数fmt字符串来转换格式并格式化数据,然后将结果输出到参数Stream指定的文件中
	 //直到出现字符串结束的\0为止。 
     ret = vfprintf(fp, fmt, args);
     //获取完所有参数之后,为了避免发生程序瘫痪,需要将 ap指针关闭,其实这个函数相当于将args设置为NULL 
     va_end(args);
     return ret;
}

int main(void)
{
	myfprintf(stdout,"hello world\n");
	return 0 ;
}

运行结果:

技术分享

利用可变参实现fprintf函数

原文:http://blog.csdn.net/morixinguan/article/details/50718877

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!