一个fprintf的简单封装实例(vsprintf,va_start(),+va_arg(),+va_end()可变参数列表)

简介:

对于不方便进行调试的程序,最好的方法,就是将调试信息写入文件了。

下面是一个简单的实例,仅供参考。


程序代码:

#include <string.h>
#include <stdio.h>
#include <stdarg.h> 

#ifndef DEBUG
#define DEBUG
#endif

int   LOG2F(const char *format,...) 
{       
	int ret = 0;
	
#ifdef DEBUG	
	FILE* fp = NULL;	
	fp=fopen("log.txt","a+");
	if(fp != NULL)
	{	
		va_list   args; 
		va_start(args,format); 
		vfprintf(fp,format,args);
		va_end(args); 
		fflush(fp);  
	 }   
	 else
	 {
	 	ret = 1;
	 }
	 
	 if(fp != NULL)
	 {
	 	fclose(fp);
	 	fp = NULL;
	 }
#endif
	 
	return ret;
} 

int main()
{
	char *str = "It is a Log test  program!";
	int ix = 10;
	float fx = 2.0;
	
	LOG2F("%s %d %f\n",str,ix,fx);	
	
	return 0;
}


输出:

It is a Log test  program! 10 2.000000


相关文章
|
9月前
End Sub 和 Exit Sub 的区别
End Sub 和 Exit Sub 的区别
85 0
End Sub 和 Exit Sub 的区别
error C2664: “StrCmpW”: 不能将参数 2 从“const char [12]”转换为“PCWSTR”
error C2664: “StrCmpW”: 不能将参数 2 从“const char [12]”转换为“PCWSTR”
95 0
Data Vault的一点思考(三)
前段时间和一家互联网创新企业的数据架构师聊天,说他们正准备开始用Data Vault的模型进行数据仓库的建设,他们有一套维度建模的集市,但是维度建模的特点是更贴业务,但是对于数据的存储不是很友好,对于数据友好,他们是想在维度集市之前,加一层Data Vault的数据层。
2473 0
Data Vault的一点思考(二)
现在的企业,只要是有点规模的,已经不仅仅是有ER这一套数据仓库模型来做数据,如现在很多企业从原有的线下转到线上,就不得不面临DM这一套数据模型,或者是线下和线上都有,而且是相互促进的(个人认为这是发展趋势的必然),但是貌似来说现阶段线上企业用DM这一套模型,现在更火,因为现在还是处在线下往线上发展的阶段,很多创业公司只要是线上的,数据的分析是必然,那怎么把数据组织好把数据给下游用,现在的主流是DM。
2847 0
|
数据建模 大数据