• 从文件中查找关键字算法


    // (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]='';  
        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]='';  
        i=0;  
        while((c=getc(file2))!=EOF)  
        {  
            //  printf("%c",c);   
                buf2[i]=c;  
                i++;  
        }  
        buf2[i]='';  
        printf("源文件:%s
    ",buf1);  
        printf("关键字文件:%s
    ",buf2);  
        printf("关键字1:");//tag=1  
        for(i=0;buf2[i]!='';i++)  
        {  
            if(buf2[i]==' ')  
            {  
                tag++;  
                printf("
    关键字%d:",tag);  
            }  
            else 
                printf("%c",buf2[i]);  
        }  
     
        tag=1;  
          
        for(k=0;buf2[k]!='';k++)  
        {  
              
            if(buf2[k]!=' ')  
            {  
                str[location]=buf2[k+location];  
                location++;  
                str[location]='';  
            }  
            if(buf2[k]==' '||buf2[k+1]=='')//若当前位置是空格或者到达最后  
            {  
                printf("
    关键字%d出现的位置:",tag);  
                for(i=0;buf1[i]!='';i++)  
                {  
                    //str[location]='';  
                    if(buf1[i]==str[0])  
                    {  
                        flag=1;  
                        for(j=0;str[j]!='';j++)  
                        {  
                            if(str[j]!=buf1[i+j])//如果有不等的字符,则终止  
                                flag=0;  
                        }  
                        if(flag)  
                        {  
                            printf("%d ",i);  
                            count++;  
                        }  
                    }     
                }    
                printf("
    源文件中,关键字%d出现的次数%d",tag,count);  
                printf("");  
                tag++;  
                for(i=0;i<2;i++)  
                    str[i]='';  
                count=0;  
                location=0;  
            }  
        }  
        printf("
    ");  
        getchar();  
    } 

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

  • 相关阅读:
    ActionForm补充
    ActionForward
    struts模式匹配
    ActionMapping
    struts1.x的国际化
    DispatchAction
    ActionForm作为类型转换
    struts自定义异常
    hibernate核心接口
    Visual C# 2008+SQL Server 2005 数据库与网络开发 9.5 小结
  • 原文地址:https://www.cnblogs.com/umgsai/p/3908214.html
Copyright © 2020-2023  润新知