您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 汽车理论 > 兰州大学数据结构课程设计实验七:文本文件单词的检索及计数
要求编程建立一个文本文件,每个单词不包括空格及跨行,单词由字符序列构成且区分大小写,完成以下功能:统计给定单词在文本文件中出现的总次数、检索输出某单词在文本文件中首次出现的行号及位置。出现的问题:当选定单词是某一行最后一个单词时,记录行数的计数器会多记录一次行数.编程环境是codeblocks,编译器是GUN-GCC,操作系统是win7-64#includestdio.h#includestdlib.hchar*Newfile();intIndex();char*Newfile()//建立一个新的文本文档,并将输入内容写入文本中{FILE*fp;charch,filename[10];printf(请输入文件名:(包括拓展名)\n);scanf(%s,filename);fp=fopen(filename,w+);ch=getchar();printf(请输入单词:(请以$符号结束)\n);while(ch!='$'){ch=getchar();fputc(ch,fp);}fclose(fp);returnfilename;}intIndex(char*p)//朴素模式匹配算法{FILE*fp;if((fp=fopen(p,r))==NULL){printf(找不到文件\n);exit(0);}//将文件读取到一维数组当中charS[100],T[20];charch1,ch2;ch1=fgetc(fp);inti=0;//i用于记录主串的长度while(ch1!='$'){S[i]=ch1;ch1=fgetc(fp);i++;}S[i]='$';//建立子串printf(请输入你选择的单词:\n);ch2=getchar();ch2=getchar();intj=0;//j用于记录输入的子串的长度while(ch2!='\n'){T[j]=ch2;ch2=getchar();j++;}//朴素模式匹配算法实现introw,col;//row为列,col为行row=1;col=1;intm,n,q;//m为S的下标,n为T的下标,q用于换行时记录m的值m=0;n=0;q=1;intnum=0;//num用于记录选定单词出现的次数while(mjbr{if(S[m]==T[n]){m++;n++;}else{m=m-n+1;n=0;};if(n==j){num++;if(col==1){row=m-n+1;printf(第%d个单词出现的位置是第%d行第%d个\n,num,col,row);}else{row=m-n-q;printf(第%d个单词出现的位置是第%d行第%d个\n,num,col,row);}}if(S[m]=='\n'){col++;q=m;};if(S[m]=='$'){printf(所选单词出现的次数是%d\n,num);}}}intmain(){char*p;//p用于记录和传递传递用户输入的文件名p=Newfile();Index(p);}
本文标题:兰州大学数据结构课程设计实验七:文本文件单词的检索及计数
链接地址:https://www.777doc.com/doc-2664703 .html