简易文本编辑器课程设计报告说明书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
简易文本编辑器
摘要:此次课程设计设计了一个简易的文本编辑器,该程序主要用于文本编辑的几个操作,主要由C语言实现。基于对文本编辑的需求该程序的功能在于:输入一页文字,程序可以统计出文字、数字、空格的个数统计某一字符串在文章中出现的次数,并输出该次数;删除某一子串,并将后面的字符前移。程序算法立足于书本并适当改良,能够实现文本的一些特定操作。
关键词:文本编辑 C语言程序算法
Abstract:The curriculum designed a simple text editor, which is mainly used for text editing of several operations, mainly by the C programming language. Based on the needs of the program text editing ,the program can input a text, count the number of words numbers and spaces in the file, statistics the number of a string of in the article, and output the number of times; to remove a substring, and the characters behind the forward. Program algorithm based on the book also have some improvement. Able to achieve some specific text operations.
Key words:Text editing C programming language Program algorithm
1引言
目前社会上文字编辑系统发展飞快,文本编辑软件在人们的日常生活和学习、科研、生产等各个方面有着重要的应用。因此开发一款使用的编辑器是很必要的。此次设计拟开发一个简易文本编辑器,以提高对所学知识的掌握程度。在实际应用中往往需要在编辑不同的文本信息时可完成文字信息录入、统计出文字、数字、空格的个数等使用功能。因此,需要一个有类似功能的简易文字编辑器,以便实现对文本信息录入、统计文本中文字、数字、空格数,字符串出现次数、子串删除的功能。而随着计算机科学的日渐成熟,对于复杂的文字编辑,计算机已经能充分发挥其优越性。作为计算机应用的一部分,使用计算机对这些功能的实现可以大大提高工作的效率。因此,开发此类软件是一件很有必要的事情。通过根据现有的知识对软件所需的功能进行评估分析,编写算法最终编写出此程序,本系统实现在编辑不同的文本信息时可完成文字信息录入、统计出文字、数字、空格的个数等使用功能,以方便使用。
2需求分析
2.1基本需求
现需要一个简易文本编辑器以实现以下功能:
(1)输入一页文字,程序可以统计出文字、数字、空格的个数。
(2)统计某一字符串在文章中出现的次数,并输出该次数。
(3)删除某一子串,并将后面的字符前移。
2.2功能分析
输入:对文本信息进行录入,同时完成字符数目的统计工作,将文章储存到指定文件夹。统计:在已生成的文章中查找指定的字符串,应用串的匹配。计算该字符串的出现次数,并输出。
删除:在已生成的文章中匹配到相应的字符串,并删除,然后保存剩余的字符。
3数据结构设计
考虑到此次实现的是文件的输入与存储,采用线性表方式存储,按照线性表的存储结
构定义将其封装在结构体中,由此,定义如下数据结构:
#define Max_Num 100
typedef struct article{
char *s;//文章指针
int space_num;//空格数
int word_num;//文字数
int number_num;//数字数
int lenth;//字符串长度与文本长度无关
} Article,*art;
4算法设计
4.1输入函数
考虑到文章长度的不确定性,为了防止空间浪费和溢出错误为其分配动态内存。该算法主要实现:对文章进行录入,并判断所录入的字符类型同时存储到文件中,并统计出各种字符的数目。算法采用字符单个录入并一次存储到动态数组中。
void Input()
{
int z=0;
art Art;
FILE *p;
char c;
int i=0,n=0;
Art=(art)malloc(sizeof(Article));//分配内存空间
Art->number_num=Art->space_num=Art->word_num=Art->lenth=0;//初始化
Art->s=(char *)malloc(Max_Num);//分配内存空间
Art->s[0]='\0';//初始化
printf("请输入文章,以连续两次回车结束(注:标点统一为英文标点)\n");
c=getchar();//录入文章
while(1)
{
if(c=='\n')//判断首次回车标识符
n=1;
else n=0;
Art->s[i+1]=Art->s[i];//文章终止符后移
Art->s[i++]=c;//录入信息
Art->lenth++;//长度+1
if((c<='z'&&c>='a')||(c<='Z'&&c>'A'))//判断C类型(字、数字、空格)
Art->word_num++;
else if(c<='9'&&c>='0')
Art->number_num++;
else if(c==' ')
Art->space_num++;
else if(c<0)//判断汉字
z++;
c=getchar();//取下一字符
if(c=='\n'&&n==1)//判断录入是否终止
{
Art->s[i-1]=Art->s[i];
Art->lenth--;
break;
}
if(strlen(Art->s)%Max_Num==Max_Num-1)//空间不足时分配内存空间