日志文件函数解析

代码加注释

代码来源于百度经验,经过修改能在VS2019运行。
博主发现有别的博主发过类似的代码,只是没有注释,以及不能在VS2019运行

#include <stdio.h>
#include <stdarg.h>//包括va_start,va_arg,va_end 
#include <time.h>

 //在声明不确定形参的函数时, 形参部分可以使用省略号“…”代替。
 //“…”告诉编译器, 在函数调用时不检查形参类型是否与实参类型相同, 也不检查参数个数。
int write_log(FILE* pFile, const char* format, ...)
{
	//va_list实际上是一个char *类型的指针类型
	//在函数中用va_list定义一个指针变量
	//该指针变量用来指向函数的可变参数变量
	va_list arg;
	int done;
	//void va_start( va_list arg_ptr, prev_param );
	/*
	va_start函数将参数arg_ptr设置为可变参数列表的第一个参数。
	参数arg_ptr的类型必须为va_list。参数prev_param是在可变参数列表之前的那一个参数。
	该函数作用是:获取参数列表中的参数
	使用完毕后调用va_end()结束
	*/
	va_start(arg, format);
	/*time函数返回从1970年元旦午夜0点到现在的秒数。time函数返回值是time_t类型的,把这个值赋值给time_log
	在计算机中看到的utc时间都是从(1970年01月01日 0:00:00)开始计算秒数的。*/
	time_t time_log = time(NULL);
	struct tm tm_log;
	localtime_s(&tm_log, &time_log);
	fprintf(pFile, "%04d-%02d-%02d %02d:%02d:%02d ", tm_log.tm_year + 1900, tm_log.tm_mon + 1, tm_log.tm_mday, tm_log.tm_hour, tm_log.tm_min, tm_log.tm_sec);
	/*
	vfprintf:将可变参数列表的格式化数据写入流,成功后,返回写入的字符总数。
	如果发生写入错误,则会设置错误指示符(ferror)并返回负数。
	*/
	done = vfprintf(pFile, format, arg);
	va_end(arg);
	//将流缓冲区内的数据写入文件,并清空
	fflush(pFile);
	return done;
}

c++ 时间类型详解 time_t

c++ 时间类型详解 time_t - 菜鸟教程

vfprintf用法解析

参见vfprintf用法解析 - 博主swif_N_F

fflush函数用法

fflush - 百度百科
函数名: fflush
功 能: 冲洗流中的信息,该函数通常用于处理磁盘文件。fflush()会强迫将缓冲区内的数据写回参数stream 指定的文件中。
头文件:stdio.h
原型:int fflush(FILE *stream)

其中stream是要冲洗的流

更详细完整的日志文件函数运行

C语言实现写入日志文件 - sunjianjun1981

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值