现在的位置: 首页 > 综合 > 正文

从文件中查找关键字算法

2017年12月19日 ⁄ 综合 ⁄ 共 2311字 ⁄ 字号 评论关闭

 

  1. // (1)源文件为一个txt文档,内容为符号串;  
  2. // (2)给定一个关键字文件,内容为自定义的关键字(注:关键字有若干个,用空格隔开);  
  3. // (3)依据关键字文件中的关键字在源文件中进行检索判断,得到关键字  
  4. #include"stdio.h"  
  5. #include"string.h"  
  6. #include"malloc.h"  
  7. #define BUFLEN 20480  
  8. #define MAXLINE 20480  
  9. int main()  
  10. {  
  11.     FILE *file1,*file2;   
  12.     int len=0,i=0,j,count=0,flag,k,location=0,tag=1;         
  13.     char buf1[BUFLEN],buf2[BUFLEN],str[5],c;  
  14.     for(i=0;i<5;i++)  
  15.         str[i]='\0';  
  16.     char *array1[MAXLINE],*array2[MAXLINE];              
  17.     file1=fopen("源文件.txt","r");    
  18.     file2=fopen("关键字.txt","r");  
  19. //  fgets(buf1,BUFLEN,file1);     
  20. //  fgets(buf2,BUFLEN,file2);   
  21.     i=0;  
  22.     while((c=getc(file1))!=EOF)  
  23.     {  
  24.         //  printf("%c",c);   
  25.             buf1[i]=c;  
  26.             i++;  
  27.     }  
  28.     buf1[i]='\0';  
  29.     i=0;  
  30.     while((c=getc(file2))!=EOF)  
  31.     {  
  32.         //  printf("%c",c);   
  33.             buf2[i]=c;  
  34.             i++;  
  35.     }  
  36.     buf2[i]='\0';  
  37.     printf("源文件:%s\n",buf1);  
  38.     printf("关键字文件:%s\n",buf2);  
  39.     printf("关键字1:");//tag=1  
  40.     for(i=0;buf2[i]!='\0';i++)  
  41.     {  
  42.         if(buf2[i]==' ')  
  43.         {  
  44.             tag++;  
  45.             printf("\n关键字%d:",tag);  
  46.         }  
  47.         else 
  48.             printf("%c",buf2[i]);  
  49.     }  
  50.  
  51.     tag=1;  
  52.       
  53.     for(k=0;buf2[k]!='\0';k++)  
  54.     {  
  55.           
  56.         if(buf2[k]!=' ')  
  57.         {  
  58.             str[location]=buf2[k+location];  
  59.             location++;  
  60.             str[location]='\0';  
  61.         }  
  62.         if(buf2[k]==' '||buf2[k+1]=='\0')//若当前位置是空格或者到达最后  
  63.         {  
  64.             printf("\n关键字%d出现的位置:",tag);  
  65.             for(i=0;buf1[i]!='\0';i++)  
  66.             {  
  67.                 //str[location]='\0';  
  68.                 if(buf1[i]==str[0])  
  69.                 {  
  70.                     flag=1;  
  71.                     for(j=0;str[j]!='\0';j++)  
  72.                     {  
  73.                         if(str[j]!=buf1[i+j])//如果有不等的字符,则终止  
  74.                             flag=0;  
  75.                     }  
  76.                     if(flag)  
  77.                     {  
  78.                         printf("%d ",i);  
  79.                         count++;  
  80.                     }  
  81.                 }     
  82.             }    
  83.             printf("\n源文件中,关键字%d出现的次数%d",tag,count);  
  84.             printf("");  
  85.             tag++;  
  86.             for(i=0;i<2;i++)  
  87.                 str[i]='\0';  
  88.             count=0;  
  89.             location=0;  
  90.         }  
  91.     }  
  92.     printf("\n");  
  93.     getchar();  

 

 

 

本文出自 “阿凡达” 博客,请务必保留此出处http://shamrock.blog.51cto.com/2079212/746500

抱歉!评论已关闭.