无法生成文件,大家帮我看看,这个程序是windows下面运行的。

shanqingshuilan 2008-07-21 11:22:48
下面是源代码,不知道为什么就是生不成文件,还有一直调用系统时间好像效率不行,不知道大家有什么好办法,教教我。现在是5分钟打印一次系统进程。



#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "time.h"

int prt_pro(FILE *fp);
int get_curtime(char * timeformat);
int main()
{
FILE *fp; /*日志文件指针*/
char buff[1000]; /*存放一行数据*/
char cTime[1000]; /*存储改变格式后的时间*/
char sTime[100]; /*存放机器开启时间*/
char tmpsTime[20];
char nTime[100]; /*存放现在时间*/
char tmpnTime[20];
int result;
int i=1; /*用作时间变量*/

memset(buff,0,sizeof(buff));
memset(cTime,0,sizeof(cTime));
memset(sTime,0,sizeof(sTime));
memset(tmpsTime,0,sizeof(tmpsTime));



fp=fopen("sysrecord.txt","w");
if(fp==NULL)
{
printf("打开文件sysrecord.txt失败\n");
return -1;
}
fprintf(fp,"\n\n------------------------------------------------欢迎晶晶查看日志!------------------------------------\n");
result=get_curtime(cTime);
if(result!=0)
{
printf("日期转换失败!\n");
return -2;
}
printf("cTime=%s\n",cTime);
sprintf(buff,"机器在%s开启\n",cTime);
fprintf(fp,buff);

memcpy(sTime,cTime+11,2) ;
memcpy(tmpsTime,cTime+14,2);
strcat(sTime,tmpsTime);
memset(tmpsTime,0,sizeof(tmpsTime));
memcpy(tmpsTime,cTime+17,2);
strcat(sTime,tmpsTime);

printf("sTime=%s\n",sTime);
while(1)
{
memset(nTime,0,sizeof(nTime));
memset(tmpnTime,0,sizeof(tmpnTime));
memset(cTime,0,sizeof(cTime));
result=get_curtime(cTime);

memcpy(nTime,cTime+11,2) ;
memcpy(tmpnTime,cTime+14,2);
strcat(nTime,tmpnTime);
memset(tmpnTime,0,sizeof(tmpnTime));
memcpy(tmpnTime,cTime+17,2);
strcat(nTime,tmpnTime);
printf("nTime=%s\n",nTime);
if((atol(sTime)-atol(nTime))%500==0&&(atol(sTime)-atol(nTime))!=0)
{
result=prt_pro(fp);
}
i++;
if((atol(sTime)-atol(nTime))%500==2)
{break;}
}


fclose(fp);
}


/*调用系统函数,打印所有进程,并将进程文件写入日志文件中*/
int prt_pro(FILE *fp)
{
char buff[1000]; /*存放一行数据*/
FILE *Logf; /*进程文件指针*/
int result;
char orderToP[200];

memset(orderToP,0,sizeof(orderToP));

strcpy(orderToP,"Tasklist >log123.txt");
result=system(orderToP);
if(result!=0)
{
printf("i am here");
}

Logf=fopen("log123.txt","r");

while(!feof(Logf))
{
memset(buff,0,sizeof(buff));/*初始化变量*/
fgets(buff,1000,Logf);/*获取1行*/
fprintf(fp,buff);/*写入行*/
fprintf(fp,"-----------------------------------------------------------------------------------");
}

fclose(Logf);
return 0;
}



/*日期转换函数转为xx年xx月xx日xx时xx分xx秒,timeformat为转换后存放时间的字符串*/
int get_curtime(char * timeformat)
{
char outstr[1000];
char str[100];

time_t t;
struct tm *area;

t = time(NULL);
area = localtime(&t);

memset(outstr,0x0,sizeof(outstr));

sprintf(str,"%4d-",1900+area->tm_year);
strcat(outstr,str);

sprintf(str,"%02d-",area->tm_mon+1);
strcat(outstr,str);

sprintf(str,"%02d ",area->tm_mday);
strcat(outstr,str);

sprintf(str,"%02d:",area->tm_hour);
strcat(outstr,str);

sprintf(str,"%02d:",area->tm_min);
strcat(outstr,str);

sprintf(str,"%02d",area->tm_sec);
strcat(outstr,str);


strcpy(timeformat,outstr);

return 0;
}
...全文
111 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
shanqingshuilan 2008-07-21
  • 打赏
  • 举报
回复
不好意思,原来doc名字长度有限制的,最后一个字母被限掉了,所以没看到。是可以生成的,我再去修改一下,这里就结贴了,谢谢大家,分的话就平均分了。
shanqingshuilan 2008-07-21
  • 打赏
  • 举报
回复
你们可以生成txt文件吗?我用tc编译的,根本不能生成sysrecord.txt文件
QQsoftware 2008-07-21
  • 打赏
  • 举报
回复
我用的VC,生成了txt文件,但是并没有完成你说的功能!你从新Rebuild一下!看看行不行!
e_sharp 2008-07-21
  • 打赏
  • 举报
回复
可以编译通过,sysrecord.txt也可以生成

不明白什么意思
shanqingshuilan 2008-07-21
  • 打赏
  • 举报
回复
没有报这个错
hai040 2008-07-21
  • 打赏
  • 举报
回复
在cmd下运行看有没有报这个错
printf("打开文件sysrecord.txt失败\n");
只要fopen成功文件就会生成
shanqingshuilan 2008-07-21
  • 打赏
  • 举报
回复
没有错误号和错误行,可以运行,就是没有生成sysrecord.txt文件。.exe文件也可以生成
ouyh12345 2008-07-21
  • 打赏
  • 举报
回复
错误号和错误行?
hai040 2008-07-21
  • 打赏
  • 举报
回复
无法生成文件是fopen出错?
在循环中sleep一下,1秒
shanqingshuilan 2008-07-21
  • 打赏
  • 举报
回复
忘了把程序功能说清楚了。次程序想要实现这样一个功能:在一个文件中记录每次开机时间,并每隔5分钟记录一次所有运行中的进程。

70,023

社区成员

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

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