⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 parse.c

📁 主要用于进行对给定的数据库进行文本分类
💻 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(&lt);
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 + -