从文件中查找关键字算法

 

// (1)源文件为一个txt文档,内容为符号串;  
// (2)给定一个关键字文件,内容为自定义的关键字(注:关键字有若干个,用空格隔开);  
// (3)依据关键字文件中的关键字在源文件中进行检索判断,得到关键字  
#include"stdio.h"  
#include"string.h"  
#include"malloc.h"  
#define BUFLEN 20480  
#define MAXLINE 20480  
int main()  
{  
    FILE *file1,*file2;   
    int len=0,i=0,j,count=0,flag,k,location=0,tag=1;         
    char buf1[BUFLEN],buf2[BUFLEN],str[5],c;  
    for(i=0;i<5;i++)  
        str[i]='\0';  
    char *array1[MAXLINE],*array2[MAXLINE];              
    file1=fopen("源文件.txt","r");    
    file2=fopen("关键字.txt","r");  
//  fgets(buf1,BUFLEN,file1);     
//  fgets(buf2,BUFLEN,file2);   
    i=0;  
    while((c=getc(file1))!=EOF)  
    {  
        //  printf("%c",c);   
            buf1[i]=c;  
            i++;  
    }  
    buf1[i]='\0';  
    i=0;  
    while((c=getc(file2))!=EOF)  
    {  
        //  printf("%c",c);   
            buf2[i]=c;  
            i++;  
    }  
    buf2[i]='\0';  
    printf("源文件:%s\n",buf1);  
    printf("关键字文件:%s\n",buf2);  
    printf("关键字1:");//tag=1  
    for(i=0;buf2[i]!='\0';i++)  
    {  
        if(buf2[i]==' ')  
        {  
            tag++;  
            printf("\n关键字%d:",tag);  
        }  
        else 
            printf("%c",buf2[i]);  
    }  
 
    tag=1;  
      
    for(k=0;buf2[k]!='\0';k++)  
    {  
          
        if(buf2[k]!=' ')  
        {  
            str[location]=buf2[k+location];  
            location++;  
            str[location]='\0';  
        }  
        if(buf2[k]==' '||buf2[k+1]=='\0')//若当前位置是空格或者到达最后  
        {  
            printf("\n关键字%d出现的位置:",tag);  
            for(i=0;buf1[i]!='\0';i++)  
            {  
                //str[location]='\0';  
                if(buf1[i]==str[0])  
                {  
                    flag=1;  
                    for(j=0;str[j]!='\0';j++)  
                    {  
                        if(str[j]!=buf1[i+j])//如果有不等的字符,则终止  
                            flag=0;  
                    }  
                    if(flag)  
                    {  
                        printf("%d ",i);  
                        count++;  
                    }  
                }     
            }    
            printf("\n源文件中,关键字%d出现的次数%d",tag,count);  
            printf("");  
            tag++;  
            for(i=0;i<2;i++)  
                str[i]='\0';  
            count=0;  
            location=0;  
        }  
    }  
    printf("\n");  
    getchar();  
} 

 

 

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

posted @ 2014-08-10 10:04  商商-77  阅读(673)  评论(0编辑  收藏  举报