文本编译器

上传人:小** 文档编号:88198661 上传时间:2019-04-20 格式:DOC 页数:18 大小:413.50KB
返回 下载 相关 举报
文本编译器_第1页
第1页 / 共18页
文本编译器_第2页
第2页 / 共18页
文本编译器_第3页
第3页 / 共18页
文本编译器_第4页
第4页 / 共18页
文本编译器_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《文本编译器》由会员分享,可在线阅读,更多相关《文本编译器(18页珍藏版)》请在金锄头文库上搜索。

1、沈阳工程学院课程设计报告 简易文本编辑器文本编译器第二章 简易文本编辑器2.1 问题分析一个简易文本编辑器应该具有图形菜单界面,包括查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除文本信息等功能并可正确存盘、取盘,正确显示总行数。2.2 数据结构与算法分析2.2.1 结构与算法分析为实现数据的有序存储,该编辑器应该用顺序表来存储输入的信息。顺序表是数据结构中线性表的一种,它是用一块地址连续的存储空间依次存储线性表的元素。其特点为:在顺序表上逻辑关系相邻的俩个元素在物理位置上也相邻;在顺序表上可以随即存取表中的元素。在编辑器的主界面中应有如下提示信息: 清空

2、以前的文本信息:将用数组存的数据内容全部置为0; 显示当前文本信息:遍历用数组存入的信息,并输入到外部显示器上; 编辑信息:定义一个结构体,并在结构体中定义一个字符型的一维数组和一个整型变量,这个整型变量用于记录一维数组中存入数据的个数; 替换文本信息:首先在数组中查找要被替换的信息,如果找到该信息,提示输入要替换的信息内容,否则提示未找到要被替换的信息; 插入文本信息:首先在数组中查找要插入点,如果找到该插入点,提示输入插入信息,确认插入信息后,提示选择向前插入信息还是向后插入信息,如果未找到插入点,显示未找到要插入的位置; 移动文本信息:首先在数组中查找要移动的信息,如果找到该信息,提示是

3、进行列移动还是进行行移动,否则提示未找到要移动的信息; 删除文本信息:首先在数组中查找要删除的信息,如果找到该信息,提示是否确认删除该信息,通过确认来删除信息,如果未找到要删除的信息,提示未找到该信息; 退出编辑器:显示感谢使用该软件并退出。2.2.2 系统运行流程图文本编辑器的运行流程图,如图21所示。图21文本编辑器流程图2.3 核心代码#include #include #include #include #include #define MAXSIZE 100int ntext; /全局变量int b=0;typedef struct char srMAXSIZE; int hang;

4、 int lie;shuru ;int strindex(shuru m,char t,int i2,int l) /查找要操作的数据的位置(模式匹配) int i4=l,j=0; while (i4ntext&j=i2) return(i4-i2); /返回匹配的第一个字符的下标 else return(-1); /模式匹配不成功void charu(shuru &k,int l) /向文本中插入内容 system(cls); int i,t=0,t2=0,a=-1; char cr20,pd,x500,c,d; int i2; printf(n当前文本信息为:n); for (i2=0;i

5、2=ntext-1;i2+) printf(%c,k.sri2); printf(n输入您要在哪个内容前插入,以结束:); fflush(stdin); while (c=getchar()!=) /用一个数组接收要插入在哪个内容之前 if (c=) break; else crt=c; t+; continue; a=strindex(k,cr,t,l); /查找并返回要插入的位置点 if (a!=-1) l=a+t; int hs=1,ls=0; for (b=0;ba;b+) ls+; if (k.srb=n) hs+; ls=0; if (a=-1) printf(n查找到结尾没有找到

6、插入点nR:重新查找点n双击回车键返回菜单:n); l=0; fflush(stdin); d=getchar(); fflush(stdin); else int i2; printf(n当前文本信息为:n); for (i2=0;i2=a;i-) k.sri+t2=k.sri; for (i=0;it2;i+) k.sri+a=xi; ntext=ntext+t2; printf(n当前文本信息为:n); for (i2=0;i2=ntext-1;i2+) printf(%c,k.sri2); printf(插入成功n); fflush(stdin); getchar(); if (d=r

7、|d=R|pd=r|pd=R) l=0; charu(k,l); FILE *fp; int b11; fprintf(fp,The contents isn); for (b11=0;b11=ntext-1;b11+) fprintf(fp,%c,k.srb11); fclose(fp);void tihan(shuru &r,int l) /内容替换 int t=0,t1=0,i,a; char c,th20,d,d1,bth20; int i2; printf(n当前文本信息为:n); for (i2=0;i2=ntext-1;i2+) printf(%c,r.sri2); printf

8、(n输入要被替换的内容,以结束:); fflush(stdin); while (c=getchar()!=) /t指替换前内容的长度 if (c=) break; else btht=c; t+; continue; a=strindex(r,bth,t,l); /查找要被替换的内容的位置 if (a!=-1) l=a+t; int hs=1,ls=0; for (b=0;ba;b+) ls+; if (r.srb=n) hs+; ls=0; if (a=-1) printf(n查找到结尾没有找到要被替换的内容n继续查找请按R,双击回车键退出n); l=0; /printf(n%d,a); /printf(n%d,i1);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号