文本文件单词的检索与计数.doc.doc
文本预览下载声明
1需求分析
1.1 建立文本文件
建立文本文件的实现思路 1) 定义一个串变量 (2) 定义文本文件 (3) 输入文件名,打开该文件 (4) 循环读入文本行,写入文本文件,其过程如下: While(不是文件输入结束){ 读入一文本行至串变量; 串变量写入文件; 输入是否结束输入标志; } (5) 关闭文件 该功能需要用到前一节中设计的模式匹配算法,逐行扫描文本文件。匹配一个,计数器加1,直到整个文件扫描结束;然后输出单词的次数。 1.4 主控菜单程序的结构 (1) 头文件包含 (2) 菜单选择包括: 1、 建立文件 2、 单词计数 3、 单词定位 4、 退出程序 (3)选择1~4执行相应的操作,其他字符为非法
共0条评论...
定义一个串变量 定义文本文件 输入文件名,打开该文件 循环读入文本行,写入文本文件 关闭文件
建立文本文件的思路过程
2.2给定单词的计数
逐行扫描文本文件。匹配一个,计数器加1,直到整个文件扫描结束;然后输出单词的次数。 给定单词计数的过程
2.3检索单词出现在文本文件中的行号、次数及其位置
逐行扫描文本文件。匹配一个,计数器加1,直到整个文件扫描结束;然后输出单词的次数。#includestdio.h#includestring.h#define MaxStrSize 256 //根据用户需要自己定义大小typedef struct {????????? char ch[MaxStrSize]; //ch是一个可容纳256个字符的字符数组????????? int length;} SString;//定义顺序串类型int PartPosition (SString s1,SString s2,int k){??? int i,j;????? i=k-1;???? //扫描s1的下标,因为c中数组下标是从0开始,串中序号相差1??? j=0;//扫描s2的开始下标??? while(is1.length js2.length)?? {if(s1.ch[i]==s2.ch[j])??????? { i++;j++; //继续使下标移向下一个字符位置??????? }?? else????? {?????????? i=i-j+1; j=0;??????? } }?? if (j=s2.length)????? return i-s2.length;?? else????? return -1;//表示s1中不存在s2,返回-1????? //表示s1中存在s2,返回其起始位置??} //函数结束??void CreatTextFile()????? {????????? SString S;????????? char fname[10],yn;????????? FILE *fp;???????? printf(输入要建立的文件名:);???????? 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 :);yn=getchar();???????????????? }????????? fclose(fp);//关闭文件????????? printf(建立文件结束!);??? }?? void SubStrCount()???????? {???????????? FILE *fp;???????????? SString S,T;//定义两个串变量??????????? char fname[10];??????????? int i=0,j,k;??????????? printf(输入文本文件名:);??????????? scanf(%s,fname);??????????? fp=fopen(fname,r);?????
显示全部