同时打印日志到屏幕和文件,学习了...

liuzuofei 2009-08-05 01:12:48
基于DOS的一个C程序,调试时,希望能够既打印屏幕又能写文件,
求一个统一函数,类似printf();这样的....
...全文
226 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuzuofei 2009-08-05
  • 打赏
  • 举报
回复
嗯,我也写出来了,主要是参考了5楼的代码,谢谢了。
终于解决了测试调试大问题!
mstlq 2009-08-05
  • 打赏
  • 举报
回复
漏写closefile的函数了,请楼主自行补上^_^
mstlq 2009-08-05
  • 打赏
  • 举报
回复
给楼主一个例子,请好好感谢3楼吧^_^
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>


FILE *fpLogFile;//全局变量

void codeprintf_both(const char *format, ...) {
va_list vargs;
vfprintf(fpLogFile, format, vargs);
vfprintf(stderr, format, vargs);
};

initLog()
{
fpLogFile=fopen("c:\\log.log","w");
};

int main()
{
initLog();
codeprintf_both("shit%d %d",1,2);
return 0;
}
mstlq 2009-08-05
  • 打赏
  • 举报
回复
3楼那个……
基本上跟printf是一样用的^_^
liuzuofei 2009-08-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wolf0403 的回复:]
C/C++ codeprintf_both(format, ...) {
va_list args;
vfprintf(fpLogFile, format, vargs);
vfprintf(stderr, format vargs);
}
[/Quote]
这个怎么用?谢谢了 !
james_hw 2009-08-05
  • 打赏
  • 举报
回复
我自己在工程中添加的,为了方便测试组提交bug时能保存打印信息,呵呵,是windows下的

void Print(char *pchFormat, ... )
{
char Ver_PRNBuf[128];
char Day_PrnBuf[64];
FILE *fp=NULL;
va_list pchParaList;
CTime t = CTime::GetCurrentTime(); //获取系统日期

(void)va_start(pchParaList,pchFormat);


fp=fopen(chNetPrintRoot,"a");
if(NULL==fp)
return;

int d=t.GetDay(); //获得几号

int y=t.GetYear(); //获取年份

int m=t.GetMonth(); //获取当前月份

int h=t.GetHour(); //获取当前为几时

int mm=t.GetMinute(); //获取分钟

int s=t.GetSecond(); //获取秒

memset(Day_PrnBuf,0,sizeof(Day_PrnBuf));
sprintf(Day_PrnBuf,"<%d-%d-%d %d:%d:%d>",y,m,d,h,mm,s);

memset(Ver_PRNBuf,0,sizeof(Ver_PRNBuf));
vsprintf(Ver_PRNBuf,pchFormat, pchParaList);

fseek(fp,0L,SEEK_END);
if(strlen(Day_PrnBuf)!=fwrite(Day_PrnBuf,1,strlen(Day_PrnBuf),fp))
goto EXIT;
if(strlen(Ver_PRNBuf)!=fwrite(Ver_PRNBuf,1,strlen(Ver_PRNBuf),fp))
goto EXIT;

va_end(pchParaList);

EXIT:
if(NULL!=fp)
fclose(fp);
return;
}
mstlq 2009-08-05
  • 打赏
  • 举报
回复
不定长参数……
呵呵,忘了这回事^_^
Wolf0403 2009-08-05
  • 打赏
  • 举报
回复
printf_both(format, ...) {
va_list args;
vfprintf(fpLogFile, format, vargs);
vfprintf(stderr, format vargs);
}
mstlq 2009-08-05
  • 打赏
  • 举报
回复
不懂,只会分开把printf和fprintf各写一样>_<
等待高人赐教^_^
liuzuofei 2009-08-05
  • 打赏
  • 举报
回复
今天怎么回事?都没有空啊?

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧