无法生成文件,大家帮我看看,这个程序是windows下面运行的。
下面是源代码,不知道为什么就是生不成文件,还有一直调用系统时间好像效率不行,不知道大家有什么好办法,教教我。现在是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;
}