自定义print

文章链接:https://codemouse.online/archives/1215235231

重新订制print

#define DEBUG 1
#if DEBUG
    #define ERR_PRINT(fmt, args...)  do{printf("[*]Errorinfo: <%s>: " fmt "\n" \
                            ,__func__, ##args); } while (false)
    #define DBG_PRINT(fmt, args...)  do{printf("[*]printinfo: <%s>: " fmt "\n" \
                            ,__func__, ##args); } while (false)
#else
    #define ERR_PRINT(...) do {} while (false)
    #define DBG_PRINT(...) do {} while (false)
#endif

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

//#define DEBUG

int Debug_printf(char const*__restrict fmt,...)
{
#ifdef DEBUG
	int ret;
	va_list ap;
	
	va_start(ap,fmt);
	ret=vfprintf(stdout,fmt,ap);
	va_end(ap);
	return(ret);
#else
	return 0;
#endif
}

void showtime(char * buff)
{
	time_t t;
	struct tm * lt;
	time(&t);
	lt = localtime(&t);//转为时间结构。
	sprintf(buff, "%d-%.2d-%.2d %.2d:%.2d:%.2d", lt->tm_year + 1900,
		lt->tm_mon, lt->tm_mday, lt->tm_hour,
		lt->tm_min, lt->tm_sec);//输出结果
	//2019-04-16 12:32:33
}

#define LOGPRIN (1)
#define PRIN (1)
#if LOGPRIN
#if PRIN
// 打印出来并写入文件
int Log_Printf(const char *szFormat, ...)
{
	int iLength;    //存储字符串的长度信息
	va_list pArgs;        //声明一个va_list型变量
	FILE *file = fopen("log.txt", "a");
	char time[20];
	showtime(time);
	fprintf(file, "%s :\t", time);
	va_start(pArgs, szFormat);  //让pArgs指向变参
	iLength = vfprintf(file, szFormat, pArgs); //输出到缓冲区szBuffer中
	iLength = vprintf(szFormat, pArgs); //输出到缓冲区szBuffer中
	va_end(pArgs);          //释放pArgs
	fclose(file);
	return iLength;         //返回字符串长度
}
#else
// 写入文件
int Log_Printf(const char *szFormat, ...)
{
	int iLength;    //存储字符串的长度信息
	va_list pArgs;        //声明一个va_list型变量
	FILE *file = fopen("log.txt", "a");
	char time[20];
	showtime(time);
	fprintf(file, "%s :\t", time);
	va_start(pArgs, szFormat);  //让pArgs指向变参
	iLength = vfprintf(file, szFormat, pArgs); //输出到缓冲区szBuffer中
	va_end(pArgs);          //释放pArgs
	fclose(file);
	return iLength;         //返回字符串长度
}
#endif
#else
// 打印到控制台
int Log_Printf(const char *szFormat, ...)
{
	int iLength;    //存储字符串的长度信息
	va_list pArgs;        //声明一个va_list型变量
	va_start(pArgs, szFormat);  //让pArgs指向变参
	iLength = vprintf(szFormat, pArgs); //输出到缓冲区szBuffer中
	va_end(pArgs);          //释放pArgs
	return iLength;         //返回字符串长度
}

#endif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值