📄 parse.c
字号:
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
#include"time.h"
#include"windows.h"
#include"conio.h"
FILE *fp;
FILE *fp1;
int main()
{ int i=0;
int j=0;
int blank_flag=0;
int k;
int ct;
int cg_flag=0;
int count=0;
time_t lt;
char *st;
char cgbuf[512];
char buf[256];
char date[11];
char tmpchar[60];
char *Name;
char ID[10];
int idnum=0;
char *tmpmemory;
char *summary=NULL;
char *cgfiles=NULL;
char *adfiles=NULL;
char *purpose=NULL;
char *description=NULL;
int summary_flag=0;
int cg_line_flag=0;
int des_line_flag=0;
int ps_line_flag=0;
int ad_line_flag=0;
int execute_flag=0;
if((fp=fopen("CHANGES.TXT","r"))==NULL)
{ printf("can not open the file.\n");
exit(1);
}
if((fp1=fopen("RESULt.TXT","w+"))==NULL)
{ printf("can not open the file.\n");
exit(1);
}
lt=time(NULL);
st=ctime(<);
fprintf(fp1,"\n The current time that construct database:%s", st);
fprintf(fp1,"\n /***********************************************************Change History*************************************************/\n");
fprintf(fp1,"Change ID | Changed Date | Changed By | Summary | Description | Purpose | Changed Files | Added Files \n");
while(!feof(fp))
{count++;
fgets(buf,256,fp);
if(buf[0]=='\n')
printf("blank line!\n");
else
{
if(count!=3)
{ if((buf[0]=='0'||buf[0]=='1')&&(buf[9]>='0'&&buf[9]<='9'))
{
summary_flag=0;
cg_line_flag=0;
des_line_flag=0; //标志清零
ps_line_flag=0;
ad_line_flag=0;
for(i=0;i<10;i++)
date[i]=buf[i];
date[10]='\0';
Name=(char *)malloc(sizeof(char)*(strlen(buf)-12+1));
i=12;
j=0;
while(buf[i]!='\n')
Name[j++]=buf[i++];
Name[j]='\0';
}
else
{
i=0;
while(buf[i]==' ')
i++;
ct=i;
for(k=0;k<20;k++)
tmpchar[k]=0;
j=0;
while(buf[i]!=' '&&buf[i]!=':'&&buf[i]!='\n')
tmpchar[j++]=buf[i++];
tmpchar[j]='\0';
if(strcmp(tmpchar,"*)")==0)
{ if(summary!=NULL)
{ fprintf(fp1,"|%s",summary);
summary=NULL; //
// free(summary);
} else
fprintf(fp1,"| blank ");
if(description!=NULL)
{ fprintf(fp1,"|%s",description);
description=NULL; //free(description)
}
else
fprintf(fp1,"| blank ");
if(purpose!=NULL)
{
fprintf(fp1,"|%s",purpose);
purpose=NULL;
//free(purpose);
}
else
fprintf(fp1,"| blank ");
if(cg_flag==1)
{
cg_flag=0;
fprintf(fp1,"|%s",cgbuf);
printf("%s\n",cgbuf);
}
else
fprintf(fp1,"| blank ");
if(adfiles!=NULL)
{fprintf(fp1,"|%s",adfiles);
adfiles=NULL;
}
else
fprintf(fp1,"| blank ");
cg_line_flag=0;
des_line_flag=0; //标志清零
ps_line_flag=0;
ad_line_flag=0;
idnum++;
itoa(idnum,ID,10);
printf("\n%s\n",ID);
i=ct+strlen("*) ");
summary=(char *)malloc(sizeof(char)*(strlen(buf)-i+1));
j=0;
while(buf[i]!='\n')
summary[j++]=buf[i++];
summary[j]='\0';
summary_flag=1;
fprintf(fp1,"\n %s| %s | %s ",ID,date,Name);
}
else if(strcmp(tmpchar,"Description")==0)
{ summary_flag=0;
ps_line_flag=0;
cg_line_flag=0;
ad_line_flag=0;
i=ct+strlen("Description:");
description=(char *)malloc(sizeof(char)*(strlen(buf)-i+1));
j=0;
while(buf[i]!='\n')
description[j++]=buf[i++];
description[j]='\0';
des_line_flag=1;
}
else if(strcmp(tmpchar,"Purpose")==0)
{
summary_flag=0;
des_line_flag=0; //标志清零
cg_line_flag=0;
ad_line_flag=0;
i=ct+strlen("Purpose:");
purpose=(char *)malloc(sizeof(char)*(strlen(buf)-i+1));
j=0;
while(buf[i]!='\n')
purpose[j++]=buf[i++];
purpose[j]='\0';
ps_line_flag=1;
}
else if(strcmp(tmpchar,"Changed")==0)
{
summary_flag=0;
des_line_flag=0; //标志清零
ps_line_flag=0;
ad_line_flag=0;
i=ct+strlen("Changed Files: ");
j=0;
while(buf[i]!='\n')
cgbuf[j++]=buf[i++];
cgbuf[j]='\0';
cg_line_flag=1;
cg_flag=1;
}
else if(strcmp(tmpchar,"Added")==0)
{
summary_flag=0;
des_line_flag=0; //标志清零
ps_line_flag=0;
cg_line_flag=0;
i=ct+strlen("Added Files: ");
adfiles=(char *)malloc(sizeof(char)*(strlen(buf)-i+1));
j=0;
while(buf[i]!='\n')
adfiles[j++]=buf[i++];
adfiles[j]='\0';
ad_line_flag=1;
}
else if(summary_flag==1)
{
i=ct;
tmpmemory=(char *)realloc(summary,sizeof(char)*(strlen(summary)+(strlen(buf)-i+1)));
summary=tmpmemory;
j=strlen(summary);
while(buf[i]!='\n')
summary[j++]=buf[i++];
summary[j]='\0';
}
else if(des_line_flag==1)
{
i=0;
if(buf[i]==9)
{i++;}
while(buf[i]==' ')
i++;
if(buf[i]=='-')
i=i+2;
tmpmemory=(char *)realloc(description,sizeof(char)*(strlen(description)+(strlen(buf)-i+1)));
description=tmpmemory;
j=strlen(description);
while(buf[i]!='\n')
description[j++]=buf[i++];
description[j]='\0';
}
else if(ps_line_flag==1)
{
i=0;
if(buf[i]==9)
{i++;}
while(buf[i]==' ')
i++;
if(buf[i]=='-')
i=i+2;
tmpmemory=(char *)realloc(purpose,sizeof(char)*(strlen(purpose)+(strlen(buf)-i+1)));
purpose=tmpmemory;
j=strlen(purpose);
while(buf[i]!='\n')
purpose[j++]=buf[i++];
purpose[j]='\0';
}
else if(cg_line_flag==1)
{
i=0;
if(buf[i]==9)
{i++;}
while(buf[i]==' ')
i++;
if(buf[i]=='-')
i=i+2;
j=strlen(cgbuf);
while(buf[i]!='\n')
cgbuf[j++]=buf[i++];
cgbuf[j]='\0';
cg_flag=1;
}
else if(ad_line_flag==1)
{
i=ct;
tmpmemory=(char *)realloc(adfiles,sizeof(char)*(strlen(adfiles)+(strlen(buf)-i+1)));
adfiles=tmpmemory;
j=strlen(adfiles);
while(buf[i]!='\n')
adfiles[j++]=buf[i++];
adfiles[j]='\0';
}
}
}
}
}
fclose(fp);
fclose(fp1);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -