文本编辑器上机实习报告.docx

文本编辑器上机实习报告.docx

ID:61499697

大小:197.06 KB

页数:12页

时间:2021-02-07

文本编辑器上机实习报告.docx_第1页
文本编辑器上机实习报告.docx_第2页
文本编辑器上机实习报告.docx_第3页
文本编辑器上机实习报告.docx_第4页
文本编辑器上机实习报告.docx_第5页
资源描述:

《文本编辑器上机实习报告.docx》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、文本编辑器上机实习报告郑超一.问题的需求分析:本次的期中上机实习作业要求设计并实现一个简单文本编辑器,至少实现以下功能:1.把指定文件读入编辑器2.可通过键盘输入在编辑器中对文件进行编辑)3..将编辑的内容存入指定文件5.把字符串或文本块插入编辑区指定位置)6.删除编辑区里的字符串或文本块7.在编辑区里查找指定字符串)8.将文本里的“字符串1”替换为“字符串2“。在动手之前,先对该问题的需求进行分析:由于所学知识有限加上上机时间有限,而上过计算概论课程之前没有任何编程基础,想要将文本编辑器做成友好的,交互式的环境,实在是过于困难。也试过翻了一些C++的有关书籍,尝试着有“mfc”设计图形界

2、面,但由于重头来学过于复杂,而且尝试过程中屡屡不能达到效果,最终作罢,还是选择了传统的C语言的运行界面,通过case实现命令。所以,在交互性和美观上,可能本编译器就逊色不少了。尽管如此,我还是力求功能的稳定和完备,以达到作业的基本要求。由于运行环境简单,程序的运行速度不是问题,而易用性也在我的考虑范围之内,尽量在C的最基本环境下提供最便捷的操作,在提示输入方面给予尽量多的指令,对于常见的错误,也尽量予以考虑并提供帮助。二.抽象数据结类型的设计及模块功能的划分最想想到的数据类型看到此问题我最先想到的数据结构就是链表,而采用单链表和双链表解决此题并没有任何实质性区别,由于之前在第一次作业中做过

3、双链表的抽象数据类型,所以便第一时间决定用双链表稍加修改进行编译。以下给出双链表的部分基本抽象数据类型,均进行了数据的封装:结点的说明:structDoubleNode{intinfo;/*info记录结点的信息*/intline,raw;/*lineraw分别记录结点储存信息在文本中的行列位置*/PDoubleNodellink,rlink;/*双链表中的左右结点*/};双链表的说明:structDoublelist{/*双链表结构begin指向头结点end指向末结点PDoubleNodebegin,end;}此外,当然还定义了指向相应结构的指针类型。分别为PdoubleNode,Lin

4、kList。在编写的过程中,为了方便,在数据结构申明的同时我也定义了一些会反复使用的外部变量。读入的文本文件每个字符实际上相当于有序的小段,段与段之间用链表的方式串接起来。这样的好处是:任意的字符串操作,实质上是对链表指针的链接进行修改。编辑器中,仅需使用部分双链表的抽象数据类型,如创建空链表,判断链表是否为空,找出相应值的结点,在指定结点后面插入要求值的新结点,求某节点的前驱(后缀结点),在表头(表尾)插入结点,等等。一.算法与数据结构的设计本程序基本可分为两部分,除了上述的抽象数据类型,还有就是实现编辑器基本功能的各个函数,建立抽象数据类型正是为了较方便地写出这些函数,而如何实现这些也

5、才是程序的核心。首先,必须有读入指定文本的函数Readtxt,该函数应该能够将与位于C文件同一个文件夹的文本文件(.txt后缀)读入,之后才有对文本的各种编辑操作。这里考虑调用函数后手动输入文本名称从而读入文本,而函数的返回值1和0则分别表示是否成功读入了文本文件,对于读入的各种错误,如文本名输入出错,没有输入后缀名,没有在该文件夹找到相应的文本等问题都予以回应和提示。采用的fopen函数在上学期的计算概论教材中有涉及,读入成功,即创建空链表,然后把文本的内容通过抽象数据类型中的表头插入不停送入链表中,实现读入。具体实现如下:intReadtxt(charfname[]){/*读入文本*/

6、inti=0,c,m=1,n=1;PDoubleNodep=list->begin;if(fname==""){printf("文本名输入错误:请输入正确的文本名!(以.txt结尾)");return0;}else{fp=fopen(fname,"r");if(fp==NULL){printf("无法读取该文本!请确认文本位于C程序所在文件夹");return0;}else{printf("成功读取该本文!");while((c=fgetc(fp))!=EOF){if(c==''){m++;n=0;}insertPost_list_end(list,c);++i;list-

7、>end->line=m;list->end->raw=n;++n;}/*printlist(list);测试用*/fclose(fp);return1;}}}然后,考虑到需要有一定的互动行,必须使使用者能够看到相应的文本,所以应有相应的呈现文本函数Printtxt,即将文本内容打印出来。该函数较易实现。通过链表指针的不停右指有putchar输出字符即可:voidPrinttxt(inttxt){/*呈现文本*/if(t

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。