- // (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