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