《兰州大学数据结构课程设计实验七文本文件单词的检索计数.doc》由会员分享,可在线阅读,更多相关《兰州大学数据结构课程设计实验七文本文件单词的检索计数.doc(6页珍藏版)》请在三一文库上搜索。
1、要求编程建立一个文本文件,每个单词不包括空格及跨行,单词由字符序列构成且区分大小写,完成以下功能:统计给定单词在文本文件中出现的总次数、检索输出某单词在文本文件中首次出现的行号及位置。出现的问题:当选定单词是某一行最后一个单词时,记录行数的计数器会多记录一次行数.编程环境是codeblocks,编译器是GUN-GCC,操作系统是win7-64#include #include char* Newfile();int Index();char* Newfile()/建立一个新的文本文档,并将输入内容写入文本中 FILE *fp; char ch,filename10; printf(请输入文件名
2、:(包括拓展名)n); scanf(%s,filename); fp=fopen(filename,w+); ch=getchar(); printf(请输入单词:(请以$符号结束)n); while(ch!=$) ch=getchar(); fputc(ch,fp); fclose(fp); return filename;int Index(char* p)/朴素模式匹配算法 FILE *fp; if(fp=fopen(p,r)=NULL) printf(找不到文件n); exit(0); /将文件读取到一维数组当中 char S100,T20; char ch1,ch2; ch1=fge
3、tc(fp); int i=0;/i用于记录主串的长度 while(ch1!=$) Si=ch1; ch1=fgetc(fp); i+; Si=$; /建立子串 printf(请输入你选择的单词:n); ch2=getchar(); ch2=getchar(); int j=0;/j用于记录输入的子串的长度 while(ch2!=n) Tj=ch2; ch2=getchar(); j+; /朴素模式匹配算法实现 int row,col;/row为列,col为行 row=1; col=1; int m,n,q;/m为S的下标,n为T的下标,q用于换行时记录m的值 m=0; n=0; q=1; i
4、nt num=0;/num用于记录选定单词出现的次数 while(m if(Sm=Tn) 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(Sm=n) col+; q=m; ; if(Sm=$) printf(所选单词出现的次数是%dn,num); int main() char *p;/p用于记录和传递传递用户输入的文件名 p=Newfile(); Index(p);