利用va_list,vfprintf等定义自己的文件输出函数
2014-11-07 23:05
691 查看
最近在做项目的时候,经常需要打印日志文件,其实这是最好的调试方式之一,能很好的解释和检验我们的逻辑思维是否正确。为了以后能方便自己在项目中使用打印日志的函数模块,同时也方便大家理解,特意写出比较简单的打印日志的函数(在实际的项目中可以根据自己的需要任意修改),供大家参考,和大家一起进步。
在函数模块中主要用到的知识点是VA_LIST ,VA_LIST 是在C语言中解决变参问题的一组宏,在<stdarg.h>头文件下。VA_LIST的用法:
(1)首先在函数里定义一具VA_LIST型的变量,这个变量是指向参数的指针
(2)然后用VA_START宏初始化变量刚定义的VA_LIST变量,这个宏的第二个参数是第一个可变参数的前一个参数,是一个固定的参数。
(3)然后用VA_ARG返回可变的参数,VA_ARG的第二个参数是你要返回的参数的类型。
(4)最后用VA_END宏结束可变参数的获取。然后你就可以在函数里使用第二个参数了。如果函数有多个可变参数的,依次调用VA_ARG获取各个参数。
同时还用到文件打印输出函数vfprintf,当然,事先应该对文件的操作有一定的理解,不理解的童鞋最好还是看下msdn这个可是好东西,在windows下编程,真的离不开这个东东。
函数主要实现的功能,是一定的字符串打印输出到文件当中,编译环境是vs2010,具体的代码如下:
在代码中主要利用fopen打开f盘下的文件,当然,"a+"的标志说明如果文件不存在可以自己创建问价,将a,b字符串打印到指定的文件中,最后将文件句柄关闭。代码实现的方式比较简单,条理比较清晰,在指定的盘符下将会看到指定的文件。
今天立冬了
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/tongue.gif)
,天气真的有点冷了,祝愿大家每一天能进步一点,每一天能快快乐乐,一天比一天幸福。转载的话请注明出处哟!!!
在函数模块中主要用到的知识点是VA_LIST ,VA_LIST 是在C语言中解决变参问题的一组宏,在<stdarg.h>头文件下。VA_LIST的用法:
(1)首先在函数里定义一具VA_LIST型的变量,这个变量是指向参数的指针
(2)然后用VA_START宏初始化变量刚定义的VA_LIST变量,这个宏的第二个参数是第一个可变参数的前一个参数,是一个固定的参数。
(3)然后用VA_ARG返回可变的参数,VA_ARG的第二个参数是你要返回的参数的类型。
(4)最后用VA_END宏结束可变参数的获取。然后你就可以在函数里使用第二个参数了。如果函数有多个可变参数的,依次调用VA_ARG获取各个参数。
同时还用到文件打印输出函数vfprintf,当然,事先应该对文件的操作有一定的理解,不理解的童鞋最好还是看下msdn这个可是好东西,在windows下编程,真的离不开这个东东。
函数主要实现的功能,是一定的字符串打印输出到文件当中,编译环境是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字符串打印到指定的文件中,最后将文件句柄关闭。代码实现的方式比较简单,条理比较清晰,在指定的盘符下将会看到指定的文件。
今天立冬了
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/tongue.gif)
,天气真的有点冷了,祝愿大家每一天能进步一点,每一天能快快乐乐,一天比一天幸福。转载的话请注明出处哟!!!
相关文章推荐
- 利用List统计文件中单词个数,并排序输出
- 利用头文件ctime,并且定义一个类,来实现输出当前时间
- 有关va_list和vsnprintf输出函数的问题(可变参数)
- 查找系统定义size_t , va_list , va_start , va_end 等不常见宏(变量)头文件所在
- 在linux系统中将自己程序的日志输出到自己定义的文件
- C语言利用va_list、va_start、va_end、va_arg宏定义可变参数的函数
- 有关va_list和vsnprintf输出函数的问题
- 解决在VS2010下利用def文件使dll输出函数不改名的方法
- C语言利用va_list、va_start、va_end、va_arg宏定义可变参数的函数
- C语言利用va_list、va_start、va_end、va_arg宏定义可变參数的函数
- C语言利用va_list、va_start、va_end、va_arg宏定义可变参数的函数
- 在PHP中,通过filesize函数可以取得文件的大小,文件大小是以字节数表示的。如果要转换文件大小的单位,可以自己定义函数来实现。
- 利用va_list向拥有可变参数函数传入可变的参数
- 有关va_list和vsnprintf输出函数的问题(可变参数)
- 有关va_list和vsnprintf输出函数的问题
- C#中怎样将List<自己定义>转为Json格式 及相关函数-DataContractJsonSerializer
- 输出带有是/否的对话框,实现效果是:点击是,继续添加内容,点击否,返回自己定义的页面
- 利用.net部署功能注册自己的文件类型
- 利用REUSE_ALV_HIERSEQ_LIST_DISPLAY进行多层输出(输出表结构的又一例)