25、数据结构笔记之二十五串应用之文本编辑

25、数据结构笔记之二十五串应用之文本编辑

ID:17892528

大小:78.57 KB

页数:23页

时间:2018-09-08

25、数据结构笔记之二十五串应用之文本编辑_第1页
25、数据结构笔记之二十五串应用之文本编辑_第2页
25、数据结构笔记之二十五串应用之文本编辑_第3页
25、数据结构笔记之二十五串应用之文本编辑_第4页
25、数据结构笔记之二十五串应用之文本编辑_第5页
资源描述:

《25、数据结构笔记之二十五串应用之文本编辑》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、25、蛤蟆的数据结构笔记之二十五串应用之文本编辑本篇名言:“正如恶劣的品质可以在幸运中暴露一样,最美好的品质也是在厄运中被显示的。--培根”由于前段时间一直出差在外,间断了半个月,今天开始继续学习数据结构。1.文本编辑本文编辑程序是一个面向用户的系统服务程序,广泛用于源程序的输入和修改,甚至用于报刊和书籍的编辑排版以及办公室的公文书信的起草和润色。一般包括串的查找、插入和删除等基本操作。对用户来讲,一个文本(文件)可以包括若干页,每页包括若干行,每行包括若干文字。对文本编辑程序来讲,可把整个文本看成一个长字符串,称文本串,页是文本串的子串,行又是页的子串。为简化程序复杂程度,

2、可简单地把文本分成若干行。例:下面的一段源程序可以看成一个文本串,main(){floata,b,max;scanf("%f,%f",&a,&b);if(a>b)max=a;elsemax=b;};这个文本串在内存中的存储映像可为:main(){  float a,b,max;  scanf("%f,%f",&a,&b);  if a>b  max=a;  else  max=b;}                 在编辑时,为指示当前编辑位置,程序中要设立页指针、行指针、字符指针,分别指示当前页,当前行,当前字符。因此程序中要设立页表、行表便于查找。

3、在编辑时,为指示当前编辑位置,程序中要设立页指针、行指针、字符指针,分别指示当前页,当前行,当前字符。因此程序中要设立页表、行表便于查找。以上内容摘自严蔚敏老师的《数据结构C语言版》1.代码实现1.1定义结构体定义一个结构体,每个结构体表示一行,文本的字符串也是以行的形式存放的。typedefstructLINE{chartext[szLINE];/*文本内容*/structLINE*next;/*链表指针*/}L;其他定义为方便编程如typedefunsignedintU;一行最长的字节#defineszLINE252文本编辑器命令数量#defineCMDS12定义行编辑命

4、令的标准格式typedefvoid(*FUNC)(L**,char*);1.2定义编辑命令就像我们使用VI或者EMAC一样,必须要有类似w,q,x这样的命令的,我们也需要定义这样的一些命令。定义编辑命令函数的数组如下:FUNCfunctions[CMDS]={exec_quit,exec_help,exec_load,exec_save,exec_view,exec_count,exec_append,exec_insert,exec_erase,exec_edit,exec_lookup,exec_replace};/*endfunctions*/1.2.1exec_qui

5、t退出程序。voidexec_quit(L**lines,char*line){exit(0);}1.1.1exec_replace执行文本替换命令voidexec_replace(L**lines,char*line){charcmd[szLINE]="",text[szLINE]="",key[szLINE]="";/*从命令行提取新旧关键字*/sscanf(line,"%s%s%s",cmd,key,text);/*执行文本替换命令*/replace(*lines,key,text);}/*endreplace*/1.1.2exec_edit执行文本编辑命令voidex

6、ec_edit(L**lines,char*line){charcmd[szLINE]="",text[szLINE]="";Uindex=0;/*从命令行提取目标行号*/sscanf(line,"%s%d",cmd,&index);/*在命令之后另起新行用于录入文本*/gets(text);strcat(text,"");/*执行文本编辑命令*/edit(*lines,text,index);}/*endedit*/1.1.3exec_load执行加载文本文件命令voidexec_load(L**lines,char*line){charcmd[szLINE]="",f

7、ile[szLINE]="";/*分析命令行,提取文件名*/sscanf(line,"%s%s",cmd,file);/*执行加载命令*/load(lines,file);}/*endexec_load*/1.1.1exec_save执行文本保存命令voidexec_save(L**lines,char*line){charcmd[szLINE]="",file[szLINE]="";/*分析命令行,提取文件名*/sscanf(line,"%s%s",cmd,file);/*执行保存命令*/save(*

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

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

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