实验四:文本编辑.doc_第1页
实验四:文本编辑.doc_第2页
实验四:文本编辑.doc_第3页
实验四:文本编辑.doc_第4页
实验四:文本编辑.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

实验四:文本编辑一 问题描述要求建立一个文本文件,每个单词子串不包含空格且不跨行,单词子串由字符序列构成,且区分大小写;统计给定单词子串在文本文件中出现的总次数;检索输出某个单词子串出现在文本中的行号、在该行中出现的次数以及位置。二 输入与输出输入:从键盘循环输入字符串,创建到文本文件中从键盘输入要计数的单词子串以及要定位的单词子串输出:将统计结果以及定位的结果输出到屏幕三 需求分析1.定义字符串的存储结构;2.编写主函数、菜单函数,确定函数之间的接口;3.编写创建文件函数、单词匹配函数、单词计数函数、单词定位函数。使用多套数据,进行系统调试;四 开发工具与环境硬件设备:微型计算机系统软件环境:操作系统Windows,开发工具devc+五 概要设计1. 数据结构定义 #define maxsize 10000typedef unsigned char sstringmaxsize;2. 各函数模块void wordcount();/操作结果:出现的总次数void creattextfile();/统计单词,操作结果:创建文本文件int choose( );/操作结果:输入选项int index_BF(sstring s,sstring t,int pos);/操作结果:串匹配,返回匹配的位置void strfind();/操作结果:定位单词出现在某行,某列以及次数六 详细设计#include /万能头文件 using namespace std;#define maxsize 10000 typedef char sstringmaxsize; /字符串数组 void wordcount(); /单词统计函数 void creattextfile(); /创建文件函数 int choose( );int index_BF(sstring s,sstring t,int pos); /匹配函数 void strfind(); /单词定位函数 int main() int choice=0; /选择键/选择框 printf(-n);printf(1.文本文件的建立n);printf(2.单词的计数n);printf(3.单词的定位n);printf(4.退出n);printf(-n);while(1)/调用选择函数来获取选择数字 choice=choose();switch(choice) case 1: creattextfile();break;case 2: wordcount();break; case 3: strfind();break; case 4: return 0; return 0; /选择功能所对应的数字 int choose( ) int choice; printf(输入选择:n);scanf(%d,&choice);return choice;void creattextfile() /文件名filename yn表示是否继续输入 char filename20,yn=n;/字符串数组str sstring str; /文件类型指针 fp FILE *fp; printf(请输入文件名:n); scanf(%s,filename);getchar();/w表示以写模式打开文件,如果fp=NULL表示打开文件失败 if(fp=fopen(filename,w)=NULL)printf(cannot openn);exit(0);/yn=n表示继续输入 while(yn=n) printf(请输入一行字符串:n); gets(str ); /输入字符串 fputs(str,fp); /将字符串写入文件fp fputc(n,fp); /行末写换行符 printf(是否结束输入?y or n:n);scanf(%c,&yn);getchar(); fclose(fp); /关闭文件 printf(文件建立结束n); /计数函数 void wordcount( ) FILE *fp; sstring s,t; char filename10;int count=0,j,k,lent; printf(请输入要打开的文件名:n );scanf(%s,filename);if(fp=fopen(filename,r)=NULL) /打开文件成功 printf(cannot openn);exit(0);printf(请输入需要统计出现次数的单词子串:n);scanf(%s,t);/feof表示文件的结束,循环读入文件每一行count=0; /count初始化while(!feof(fp) strcpy(s,);fgets(s,1000,fp); k=0; /k初始化while(k=0)count+;k+; printf(出现了%d次n,count); /串匹配函数 int index_BF(sstring s,sstring t,int pos) int i,j,m,n; m=strlen(s); /m表示s的串长度 n=strlen(t); /n表示t的串长度 if(posm ) /这种情况不可能匹配,pos非负,pos+n一定小于总长m return(-1); i=pos;j=0; while(im&j=n) /表示n个字符全部匹配 return(i-n); else /表示没有完全匹配 return(-1); /串定位函数 void strfind() FILE *fp; /文件指针fp sstring s,t; char filename10; int i=0,j,k,lent,pos50,line=0,m; /局部变量定义区 printf(请输入要打开的文件名:n );scanf(%s,filename);if(fp=fopen(filename,r)=NULL) /打开文件成功 printf(cannot openn);exit(0);printf(请输入要定位的单词子串:n);scanf(%s,t);lent =strlen(t); /字符串t的长度 while(!feof(fp) /循环读入 strcpy(s,);fgets(s,1000,fp); /从fp文件中读入一行数据 line+; /行计数器累加,行数 k=0; i=0; /k,i初始化while(k strlen(s)-1) /逐个匹配,直到最后一个字符 j=index_BF(s,t,k); /调用定位函数 if(j0) printf(在第%d行,出现了%d次,位置分别是:,line,i);for(m=1;m=i;m+) /输出位置信息printf(%4d列,posm);printf(n); 七 运行结果八 实验总结主要是学习并使用了对操作文件的函数和字符串匹配函数。1.FILE*fp=NULL;fp

温馨提示

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

评论

0/150

提交评论