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

liuzuofei 2009-08-05 01:12:48
基于DOS的一个C程序,调试时,希望能够既打印屏幕又能写文件,
求一个统一函数,类似printf();这样的....
...全文
267 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
  • 打赏
  • 举报
回复
今天怎么回事?都没有空啊?
随着通信电子技术的迅速发展,信息技术给家居行业产生了深远的影响,家居环境的智能化监控已经成为智能家居的一个重要的发展方向。人们逐渐对自己的生活提出一种更高的要求,他们需要一种智能化、可交互,并且融合现代创新科技的产品来改善他们的生活环境,使他们生活更加安全、舒适、便捷、智能。本文根据智能家居的发展背景和研究现状,并且从实用性和可行性角度出发,研究设计了一种基于STM32单片机的智能家居系统。该系统由一个多功能综合的技术系统组成,各个多功能子系统间具有协同配合能力。基于STM32单片机实现的功能子系统包括:智能温度检测,智能湿度检测,智能烟雾/火灾检测智能检测,无线传输,人机交互机构,风扇调节,报警模块。 整个系统分为前端51单片机采集板和后端STM32单片机接收板。 采集板使用DHT11温湿度传感器、MQ烟雾传感器完成室内家居环境的采集。然后通过nRFL24L01将采集到的数据发送给后端。接收板使用LCD1602完成数据显示、使用蜂鸣器模块报警,使用风扇驱动模块调节室内家居环境。本文完成了智能家居控制系统前端、后端软硬件的设计,使用Altium designer绘制了电路原理图,使用Keil C完成了51单片机和STM32单片机的编程与调试。 最后,对本文设计的基于STM32的智能家居控制系统进行部署调试。试验结果表明,该系统可成功应用在智能家居环境检测调节和火灾安全防护的领域,可提高家居生活智能化水平。

70,038

社区成员

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

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