文本文件单词的检索与计数课程设计实验报告_第1页
文本文件单词的检索与计数课程设计实验报告_第2页
文本文件单词的检索与计数课程设计实验报告_第3页
文本文件单词的检索与计数课程设计实验报告_第4页
文本文件单词的检索与计数课程设计实验报告_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、文件检索1需求分析1. 1建立文本文件建立文本文件的实现思路(1)定义一个串变量(2)定义文本文件(3)输入文件名,打开该文件(4)循环读入文本行,写入文本文件,其过程如下:While(不是文件输入结束)读入一文本行至串变量;串变量写入文件;输入是否结束输入标志;(5)关闭文件1.2给定单词的计数该功能需要用到前一节中设计的模式匹配算法,逐行扫描文本文件。匹配一个,计数器加1,直到整个文件扫描结束;然后输出单词的次数。1.3检索单词出现在文本文件中的行号、次数及其位置1.4主控菜单程序的结构(1)头文件包含(2)菜单选择包括:1 、 建立文件2 、单词计数3 、 单词定位4 、退出程序(3)选

2、择14执行相应的操作,其他字符为非法2.概要设计2.流程图2. 1建立文本文件定义一个串变量,定义文本文件,输入文件名,打开该文件,循环读入文本行,写入文本文件, 关闭文件。教育资料定义一个串变量建立文本文件的思路过程2. 2给定单词的计数逐行扫描文本文件。匹配一个,计数器加 1,直到整个文件扫描结束;然后输出单词的 次数。给定单词计数的过程2. 3检索单词出现在文本文件中的行号、次数及其位置逐行扫描文本文件。扫描一个单词,单词数加1,匹配一个,计数器加1,输出该单词数,行数到底以此,行数加1,单词数清零,直到整个文件扫描结束;然后输出单词的次数,行号,第几个单词。扫描第L行 第N个单词If

3、N<=X检索单词的出现在文本文件中的行号,次数以及位置3详细设计主代码#include<stdio.h>#include<string.h>#define MaxStrSize 256 / 根据用户需要自己定义大小 typedef structchar chMaxStrSize; /ch是一个可容纳 256个字符的字符数组int length;SString; 定义顺序串类型int PartPosition(SString s1, SString s2, int k)int i, j;i=k-1; / 扫描s1的下标,因为c中数组下标是从 0开始,串中序号相差 1

4、 j=0; / 扫描s2的开始下标while (i<s1.length&&j<s2.length)if(s1.chi=s2.chj)i+;j+; 继续使下标移向下一个字符位置 elsei=i-j+1;j=0;if(j>=s2.length)return i-s2.length;elsereturn -1; / 表示s1中不存在s2 ,返回-1/表示s1中不存在s2,返回其起始位置 /函数结束 void CreatTextFile()SString S;char fname10, yn;FILE *fp;printf("输入要建立的文件名:"

5、);scanf("%s", fname);fp=fopen(fname,"w");yn='n' /输入结束标志初值while(yn='n'|yn='N') printf("请输入一行文本:");gets(S.ch);gets(S.ch);S.length=strlen(S.ch);fwrite(&S, S.length, 1, fp);fprintf(fp,"%c", 10); /是输入换行printf("结束输入吗? y or n:");

6、yn=getchar();fclose(fp); /关闭文件printf("建立文件结束!");void SubStrCount() FILE *fp;SString S,T; 定义两个串变量char fname10;int i=0,j,k;printf("输入文本文件名:");scanf("%s", fname);fp=fopen(fname ,"r");printf("输入要统计技术的单词:");scanf("%s", T.ch);T.length=strlen(T.ch

7、);while(!feof(fp)/扫描整个文件文本/fread(&S.ch,1,sizeof(S),fp); 读入一行文本memset(S.ch,''0', 256);fgets(S.ch,100,fp);S.length=strlen(S.ch);k=0; /初始化开始检索位置while(k<S.length-1) /检索整个主串 Sj=PartPosition(S,T,k);if(j<0)break;else i+; 单词计数器加1k=j+T.length; 继续下一字串的检索 printf("n 单词s在文本文件 $中共出现 次坨&

8、quot;,T.ch, fname,i); /统计单词出现个数void SubStrInd() FILE *fp;SString S,T; / 定义两个串变量char fname10;int i,j,k,l,m;int wz20;printf("输入文本文件名:");scanf("%s", fname);fp=fopen(fname,"r");printf(" 输入要检索的单词:");scanf("%s", T.ch);T.length=strlen(T.ch);l=0;while(!feof(

9、fp) /fread(&S, sizeof(S), 1, fp);/读入一行文本memset(S.ch,''0', 256);fgets(S.ch,256,fp);S.length=strlen(S.ch);l+;k=0;i=0;while(k<S.length-1) j=PartPosition(S,T,k); if(j<0) break;elsei+;wzi=j; k=j+T.length;if(i>0) printf(" 行号:%d,次数:d,位置分别为:",l, i);for(m=1;m<=i;m+)print

10、f("%4d", wzm+1);printf("n");int main()void CreatTextFlie(), SubStrInd();int xz;doprintf(" printf(" printf(" printf(" printf(" printf(" printf(" printf(" printf("*n");*文本文件的检索、字符串的统计及定位*坨");*n");1.建立文本文件*n");2.单词字符串的

11、计数*n");3.单词字符串的定位*n");4.退出程序*n");I*n");4)n");scanf("%d", &xz); switch(xz)case 1:CreatTextFile(); break;case 2:SubStrCount(); break;case 3:SubStrInd(); break;case 4:return 0;default: printf(" 选择错误,重新选 n");while(1);4调试分析4.1未输入文件前的页面4.2输入文本文件,计数单词出现的次数1-

12、建立文本文D:TUTCwbwj. e jie!= 回4.3检索某单词的行号,出现次数,以及位置12 3 4帔本文件的检索、字符串的统计及定位*i计定T.snn nFp/匚三匚一一本舞序XX子程门词词出建单卷序FWW*由a我本文件的检索、字符串的统计及定位» D:TUTCwbwj-exe41f 计定 曲的 UTXfaKFPF tu自 本至序 2X5立词词出日中 童贵4选 2.3.* * 请磁人擘建立的文件去力口油壹董g行受本:莪而一起加油加油加油,洁束迪人艺? y 0M n: 9谭 j 牛I ,h1晟=*11晨)墓1*:«注*企*七*:«堇蛇 文佥科的检索、字符串的

13、统计及定位一*5课程总结经过一周的奋斗,这次数据结构的课程设计终于做完了。通过这次设计我们 也着实又感受了一次编程的乐趣,从中也学到了不少知识。感受最深的一点是:以前用编程,只是注重如何编写函数能够完成所需要的 功能,似乎没有明确的战术,只是凭单纯的意识和简单的语句来堆砌出一段程序。 现在编程感觉完全不同了。在编写一个程序之前,先对这个课程设计进行了一下 分析,将每个要求都花了一下算法流程图, 使得自己的思路更加的清晰了 。然 后进行编程,不断的在电脑上调试程序,终于完成了此次的课程设计。另外,我还体会到深刻理解数据结构的重要性。只有真正理解这样定义数据 类型的好处,才能用好这样一种数据结构。了解典型数据结构的性质是非常有用 的,它往往是编写程序的关键。通过这次课程设计逐渐提高了自己的程序设计和调试能力, 我以前对算法一 直很害怕,总是看不明白究竟这程序中间的过程是怎么进行的。在这次实验中我 终于克服了这

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论