利用va_list,vfprintf等定义自己的文件输出函数

最近在做项目的时候,经常需要打印日志文件,其实这是最好的调试方式之一,能很好的解释和检验我们的逻辑思维是否正确。为了以后能方便自己在项目中使用打印日志的函数模块,同时也方便大家理解,特意写出比较简单的打印日志的函数(在实际的项目中可以根据自己的需要任意修改),供大家参考,和大家一起进步。
在函数模块中主要用到的知识点是VA_LIST ,VA_LIST 是在C语言中解决变参问题的一组宏,在头文件下。VA_LIST的用法:
(1)首先在函数里定义一具VA_LIST型的变量,这个变量是指向参数的指针
(2)然后用VA_START宏初始化变量刚定义的VA_LIST变量,这个宏的第二个参数是第一个可变参数的前一个参数,是一个固定的参数。
(3)然后用VA_ARG返回可变的参数,VA_ARG的第二个参数是你要返回的参数的类型。
(4)最后用VA_END宏结束可变参数的获取。然后你就可以在函数里使用第二个参数了。如果函数有多个可变参数的,依次调用VA_ARG获取各个参数。

同时还用到文件打印输出函数vfprintf,当然,事先应该对文件的操作有一定的理解,不理解的童鞋最好还是看下msdn这个可是好东西,在windows下编程,真的离不开这个东东。
【利用va_list,vfprintf等定义自己的文件输出函数】函数主要实现的功能,是一定的字符串打印输出到文件当中,编译环境是vs2010,具体的代码如下:

// printf_t.cpp : 定义控制台应用程序的入口点。 //#include "stdafx.h" #include "stdarg.h" #include "stdio.h" #include "stdlib.h"char buffer[256]; void printf_t(FILE *m_file,const char *fmt ...) { va_list vp; va_start(vp,fmt); //vsprintf(buffer,fmt,vp); vfprintf(m_file,fmt,vp); va_end(vp); fflush(m_file); }int _tmain(int argc, _TCHAR* argv[]) { int a = 10; char *b = "F:\\rer\\print_t.ceshi"; FILE *m_filel; m_filel = fopen("F:\\rer\\print_t.ceshi","a+"); //printf_t("%d%s\n",a,b); //printf("%s",buffer); printf_t(m_filel,"wenjiande weizhi is%d %s\n",a,b); fclose( m_filel ); return 0; }


在代码中主要利用fopen打开f盘下的文件,当然,"a+"的标志说明如果文件不存在可以自己创建问价,将a,b字符串打印到指定的文件中,最后将文件句柄关闭。代码实现的方式比较简单,条理比较清晰,在指定的盘符下将会看到指定的文件。
今天立冬了,天气真的有点冷了,祝愿大家每一天能进步一点,每一天能快快乐乐,一天比一天幸福。转载的话请注明出处哟!!!






    推荐阅读