文本文件单词的检索与计数课程设计实验报告
- 格式:doc
- 大小:836.50 KB
- 文档页数:14
2.3检索单词出现在文本文件中得行号、次数及其位置
逐行扫描文本文件。扫描一个单词,单词数加1,匹配一个,计数器加1,输出该单词数,行数到底
以此,行数加1,单词数清零,直到整个文件扫描结束;然后输出单词得次数,行号,第几个单词。
检索单词得出现在文本文件中得行号,次数以及位置
3详细设计
ﻩﻩﻩmemset(S、ch,'\0',256);
ﻩﻩfgets(S、ch,100,fp);
ﻩﻩﻩﻩS、length=strlen(S、ch);
ﻩﻩk=0;//初始化开始检索位置
ﻩﻩwhile(k<S、length-1)//检索整个主串S
ﻩﻩﻩ{
ﻩj=PartPosition(S,T,k);
ﻩﻩﻩif(j<0)
(5) 关闭文件
1、2给定单词得计数
该功能需要用到前一节中设计得模式匹配算法,逐行扫描文本文件。匹配一个,计数器加1,直到整个文件扫描结束;然后输出单词得次数。 ﻫ1、3 检索单词出现在文本文件中得行号、次数及其位置
1、4 主控菜单程序得结构
(1) 头文件包含
(2) 菜单选择包括:
1、 建立文件 ﻫ2、 单词计数
ﻩyn=getchar();
}
fclose(fp);//关闭文件
printf("建立文件结束!");
}
ﻩvoid SubStrCount()
ﻩ{
FILE*fp;
ﻩﻩSString S,T;//定义两个串变量
ﻩchar fname[10];
ﻩinti=0,j,k;
printf("输入文本文件名: ");
voidCreatTextFile()
{
ﻩSString S;
ﻩchar fname[10],yn;
ﻩFILE*fp;
ﻩprintf("输入要建立得文件名: ");
ﻩscanf("%s",fname);
fp=fopen(fname,"w");
yn='n'; //输入结束标志初值
ﻩwhile(yn=='n'||yn=='N')
主代码
#include<stdio、h>
#include<string、h>
#define MaxStrSize256//根据用户需要自己定义大小
typedef struct
{
char ch[MaxStrSize]; //ch就是一个可容纳256个字符得字符数组
ﻩint length;
}SString; //定义顺序串类型
ﻩﻩscanf("%s", fname);
ﻩfp=fopen(fname,"r");
ﻩprintf("输入要统计技术得单词:");
ﻩscanf("%s", T、ch);
ﻩﻩT、length=strlen(T、ch);
ﻩﻩwhile(!feof(fp))
ﻩ{ﻩﻩ//扫描整个文件文本
ﻩﻩ//fread(&S、ch,1,sizeof(S),fp);//读入一行文本
ﻩ{
ﻩﻩi++;
ﻩﻩﻩj++;//继续使下标移向下一个字符位置
ﻩﻩ}
ﻩelse
{
ﻩi=i-j+1;
ﻩﻩj=0;
ﻩ}
ﻩ}
if(j>=s2、length)
ﻩreturni-s2、length;
ﻩelse
ﻩreturn-1; //表示s1中不存在s2,返回-1
ﻩ//表示s1中不存在s2,返回其起始位置
} //函数结束
文件检索
1需求分析
1.1 建立文本文件
建立文本文件得实现思路 ﻫ(1) 定义一个串变量
(2) 定义文本文件
(3) 输入文件名,打开该文件
(4) 循环读入文本行,写入文本文件,其过程如下: ﻫWhile(不就是文件输入结束){ ﻫ读入一文本行至串变量; ﻫ串变量写入文件;
输入就是否结束输入标志; ﻫ}
ﻩﻩl++;
ﻩk=0;
ﻩﻩi=0;
ﻩwhile(k<S、length-1)
ﻩﻩ{
ﻩﻩj=PartPosition(S,T,k);
ﻩﻩﻩif(j<0)
ﻩﻩﻩbreak;
ﻩﻩﻩelse
ﻩﻩﻩ{
ﻩﻩﻩi++;
int PartPosition(SStrings1, SStrings2,int k)
{
ﻩinti, j;
ﻩi=k-1;//扫描s1得下标,因为c中数组下标就是从0开始,串中序号相差1
ﻩj=0;//扫描s2得开始下标
while (i<s1、length&&j<s2、length)
ﻩ{
ﻩﻩif(s1、ch[i]==s2、ch[j])
ﻩscanf("%s", T、ch);
ﻩﻩT、length=strlen(T、ch);
ﻩl=0;
while(!feof(fp))
{
ﻩﻩ//fread(&S, sizeof(S), 1, fp);//读入一行文本
ﻩﻩmemset(S、ch,'\0',256);
ﻩfgets(S、ch,256,fp);
ﻩﻩS、length=strlen(S、ch);
ﻩ{
ﻩﻩprintf("请输入一行文本:");
ﻩgets(S、ch);gets(S、ch);
ﻩS、length=strlen(S、ch);
ﻩfwrite(&S, S、length,1,fp);
ﻩfprintf(fp,"%c", 10);//就是输入换行
ﻩprintf("结束输入吗?y orn: ");
ﻩﻩﻩﻩbre3;;//单词计数器加1
ﻩk=j+T、length; //继续下一字串得检索
ﻩﻩﻩﻩ}
ﻩﻩ}
ﻩ}printf("\n单词%s在文本文件%s中共出现%d次\n", T、ch, fname,i);
ﻩ}//统计单词出现个数
void SubStrInd()
3、 单词定位
4、 退出程序 ﻫ(3)选择1~4执行相应得操作,其她字符为非法
1.共0条评论、、、
2.概要设计
2、流程图
2.1建立文本文件
定义一个串变量,定义文本文件,输入文件名,打开该文件,循环读入文本行,写入文本文件,关闭文件。
建立文本文件得思路过程
2.2给定单词得计数
逐行扫描文本文件。匹配一个,计数器加1,直到整个文件扫描结束;然后输出单词得次数。
ﻩ{
ﻩFILE *fp;
ﻩﻩSString S,T;//定义两个串变量
charfname[10];
inti,j,k,l,m;
ﻩintwz[20];
printf("输入文本文件名:");
ﻩﻩscanf("%s", fname);
ﻩfp=fopen(fname,"r");
printf("输入要检索得单词:");