简单的行编辑器(C语言).doc

简单的行编辑器(C语言).doc

ID:51099236

大小:34.50 KB

页数:9页

时间:2020-03-09

简单的行编辑器(C语言).doc_第1页
简单的行编辑器(C语言).doc_第2页
简单的行编辑器(C语言).doc_第3页
简单的行编辑器(C语言).doc_第4页
简单的行编辑器(C语言).doc_第5页
资源描述:

《简单的行编辑器(C语言).doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、简单的行编辑器【要求】(1)设置一个简单的行编辑器,每行以回车结束(2)数据以文件形式存储(3)编辑器具有查找、替换、修改数据的功能2011-7-9。请把所有的注释信息提取出来就可以写程序设计报告。#include/*标准文件流操作,这里使用了open/fclose/fprintf/printf/scanf/gets函数*/#include/*标准系统库,这里使用了malloc/free/exit*/#include/*标准字符串库,这里使用st

2、rlen/strcpy/memcpy/memset*/#defineszLINE252/*定义一行字符串最长为252字节*/#defineCMDS12/*定义12个标准行编辑命令*//*采用链表存储文本*/typedefstructLINE{chartext[szLINE];/*文本内容*/structLINE*next;/*链表指针*/}L;/*简写无类型整数*/typedefunsignedintU;/*定义12个行编辑命令的标准格式*/typedefvoid(*FUNC)(L**,char*);/

3、*定义12个标准行编辑命令的关键字*/charkeywords[CMDS][8]={"quit","help","load","save","view","count","append","insert","erase","edit","lookup","replace"};/*endkeywords*//*清空链表操作*/voidclear(L**lines){L*a=0,*b=0;if(!lines)return;a=*lines;while(a){b=a->next;free(a);a=b;}/*

4、endwhile*/*lines=0;}/*endclear*//*在链表中根据行号index调出指定的行*/L*locate(L*lines,Uindex){L*t=lines;Ui=0;if(!t)return0;if(index==0)returnt;for(i=0;inext;if(!t)return0;}/*next*/returnt;}/*endlocate*//*浏览命令,如果f存在则以带行号格式保存文件(如果f==stdout则打印到屏幕上),浏览范围为

5、from到to(行号)。view(lines,0,0,0)表示统计已加载到内存的文本行数量*/intview(L*lines,FILE*f,Ufrom,Uto){L*t=lines;Uindex=0;while(t){index++;if(f&&index>=from&&index<=to)fprintf(f,"%d:%s",index,t->text);t=t->next;}/*endwhile*/returnindex;}/*endview*//*在当前文档中根据关键字进行搜索,并将搜索结果打印出来

6、*/voidlookup(L*lines,char*string){L*t=0;Uindex=0;if(!string)return;t=lines;while(t){index++;if(strstr(t->text,string))printf("%d:%s",index,t->text);t=t->next;}/*endwhile*/}/*endlookup*//*在一行文本中执行替换命令,把所有关键字替换为新关键字*/voidrpc(char*string,char*key,char*repla

7、cement){charfine[szLINE],*x=0,*y=0,*z=0;intla=0,lb=0,r=0;if(!string

8、

9、!key

10、

11、!replacement)return;memset(fine,0,szLINE);x=string;y=fine;/*首先记录新旧关键字长度*/la=strlen(key);lb=strlen(replacement);do{/*用指针逐个比较*/r=memcmp(x,key,la);if(r){/*如果关键字不匹配则复制字符串*/*y=*x;x++;y

12、++;}else{/*如果关键字匹配则替换字符串*/memcpy(y,replacement,lb);x+=la;y+=lb;}/*endif*/}while(*x);/*将替换完成的结果返回*/memcpy(string,fine,szLINE);}/*endrpc*//*全文替换*/voidreplace(L*lines,char*string,char*replacement){L*t=0;Uindex=0;if(!string

13、

14、!

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

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

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