文本编译器.docx
- 文档编号:23109163
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:22
- 大小:277.58KB
文本编译器.docx
《文本编译器.docx》由会员分享,可在线阅读,更多相关《文本编译器.docx(22页珍藏版)》请在冰豆网上搜索。
文本编译器
文本编译器
第二章简易文本编辑器
2.1问题分析
一个简易文本编辑器应该具有图形菜单界面,包括查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除文本信息等功能并可正确存盘、取盘,正确显示总行数。
2.2数据结构与算法分析
2.2.1结构与算法分析
为实现数据的有序存储,该编辑器应该用顺序表来存储输入的信息。
顺序表是数据结构中线性表的一种,它是用一块地址连续的存储空间依次存储线性表的元素。
其特点为:
在顺序表上逻辑关系相邻的俩个元素在物理位置上也相邻;在顺序表上可以随即存取表中的元素。
在编辑器的主界面中应有如下提示信息:
清空以前的文本信息:
将用数组存的数据内容全部置为0;
显示当前文本信息:
遍历用数组存入的信息,并输入到外部显示器上;
编辑信息:
定义一个结构体,并在结构体中定义一个字符型的一维数组和一个整型变量,这个整型变量用于记录一维数组中存入数据的个数;
替换文本信息:
首先在数组中查找要被替换的信息,如果找到该信息,提示输入要替换的信息内容,否则提示未找到要被替换的信息;
插入文本信息:
首先在数组中查找要插入点,如果找到该插入点,提示输入插入信息,确认插入信息后,提示选择向前插入信息还是向后插入信息,如果未找到插入点,显示未找到要插入的位置;
移动文本信息:
首先在数组中查找要移动的信息,如果找到该信息,提示是进行列移动还是进行行移动,否则提示未找到要移动的信息;
删除文本信息:
首先在数组中查找要删除的信息,如果找到该信息,提示是否确认删除该信息,通过确认来删除信息,如果未找到要删除的信息,提示未找到该信息;
退出编辑器:
显示感谢使用该软件并退出。
2.2.2系统运行流程图
文本编辑器的运行流程图,如图2—1所示。
图2—1文本编辑器流程图
2.3核心代码
#include
#include
#include
#include
#include
#defineMAXSIZE100
intntext;//全局变量
intb=0;
typedefstruct
{
charsr[MAXSIZE];
inthang;
intlie;
}shuru;
intstrindex(shurum,chart[],inti2,intl)//查找要操作的数据的位置(模式匹配)
{
inti4=l,j=0;
while(i4 { if(m.sr[i4]==t[j])//继续匹配下一个字符 { j++; i4++; //主串和子串依次匹配下一个字符 } else//主串、子串指针回溯重新开始下一次匹配 { i4=i4-j+1;//主串从下一个位置开始匹配 j=0; //子串从头开始匹配 } } if(j>=i2) { return(i4-i2); }//返回匹配的第一个字符的下标 else return(-1);//模式匹配不成功 } voidcharu(shuru&k,intl)//向文本中插入内容 { system("cls"); inti,t=0,t2=0,a=-1; charcr[20],pd,x[500],c,d; inti2; printf("\n当前文本信息为: \n"); for(i2=0;i2<=ntext-1;i2++) printf("%c",k.sr[i2]); printf("\n输入您要在哪个内容前插入,以@结束: "); fflush(stdin); while((c=getchar())! ='@')//用一个数组接收要插入在哪个内容之前 { if(c=='@') { break; } else { cr[t]=c; t++; continue; } } a=strindex(k,cr,t,l);//查找并返回要插入的位置点 if(a! =-1) { l=a+t; } inths=1,ls=0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 文本 编译器