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

简单的行编辑器

【要求】

(1) 设置一个简单的行编辑器,每行以回车结束

(2) 数据以文件形式存储

(3) 编辑器具有查找、替换、修改数据的功能

201-7-9。请把所有的注释信息提取出来就可以写程序设计报告。

typedef struct LINE {

char text[szLINE]; /*文本内容*/

struct LINE * next; /*链表指针*/

}L;

/*简写无类型整数*/

typedef unsigned int U; /*定义12个行编辑命令的标准格式*/

typedef void (*FUNC)(L **, char*); /*定义12个标准行编辑命令的关键字*/

char keywords[CMDS][8]={

"quit", "help", "load", "save",

"view", "count", "append", "insert",

"erase", "edit", "lookup", "replace"

}; /*end keywords*/

/*清空链表操作*/

void clear(L ** lines)

{ L *a =0, *b=0;

if(!lines) return ;

a = *lines;

while(a) {

b=a->next ;

free(a);

a=b;

} /*end while*/

*lines=0;

} /*end clear*/

/*在链表中根据行号index调出指定的行*/

L *locate(L *lines, U index)

{ L *t=lines; U i = 0;

if(!t) return 0;

if(index == 0) return t;

for(i=0; i

t=t->next;

if(!t) return 0;

}/*next*/

return t;

}/*end locate*/

/*浏览命令,如果f存在则以带行号格式保存文件(如果f==stdout则打印到屏幕上),浏览范围为from到to(行号)。view(lines, 0, 0, 0)表示统计已加载到内存的文本行数量*/

int view(L * lines, FILE * f, U from, U to)

{L *t=lines; U index=0;

while(t) {

index ++;

if(f && index >= from && index <= to) fprintf(f, "%d: %s", index, t->text);

t=t->next;

}/*end while*/

return index;

}/*end view*/

/*在当前文档中根据关键字进行搜索,并将搜索结果打印出来*/

void lookup(L * lines, char * string)

{L *t=0; U index = 0;

if(!string) return ;

t=lines;

while(t) {

index ++;

if(strstr(t->text , string)) printf("%d: %s", index, t->text );

t=t->next;

}/*end while*/

}/*end lookup*/

/*在一行文本中执行替换命令,把所有关键字替换为新关键字*/

void rpc(char * string, char * key, char * replacement)

{ char fine[szLINE], *x=0, *y=0, *z=0;

int la=0, lb=0, r=0;

if(!string || !key || !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++;

}else{/*如果关键字匹配则替换字符串*/

memcpy(y, replacement, lb);

x += la; y += lb;

}/*end if*/

}while(*x);

/*将替换完成的结果返回*/

memcpy(string, fine, szLINE);

}/*end rpc*/

/*全文替换*/

void replace(L * lines, char * string, char * replaceme

行编辑器c语言,简单的行编辑器(C语言).doc相关推荐

  1. C语言简单程序的编写和调试,上机1--C语言简单程序的编写和调试.doc

    上机1--C语言简单程序的编写和调试.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印 ...

  2. python实现文本编辑器_Python-tkinter实现简单的文本编辑器

    Python-tkinter实现简单的文本编辑器 利用tkinter实现简单的文本编辑器.创建一个简单的文本编辑器.可以用读文件的方式在一个文本域里显示一些文字供用户编辑. 当用户退出程序时(通过 Q ...

  3. c语言简单课程设计报告,C语言课程设计报告—范例

    <C语言课程设计报告-范例>由会员分享,可在线阅读,更多相关<C语言课程设计报告-范例(18页珍藏版)>请在人人文库网上搜索. 1.XX学院C语言课程设计报告课程名称: C语言 ...

  4. php简单加减乘除,C++_C 语言简单加减乘除运算,C语言也可以进行加减乘除运算 - phpStudy...

    C 语言简单加减乘除运算 C语言也可以进行加减乘除运算,但是运算符号与数学中的略有不同,见下表. 加法 减法 乘法 除法 求余数 数学 + - × ÷ 无 C语言 + - * / % 加号.减号与数学 ...

  5. c语言简单的while语句,C语言入门 — while语句

    C语言入门,while语句,实现在一定条件下的循环,可以用while实现死循环,while的使用语法如下: while(执行条件) { 执行代码: } 1.使用while,实现死循环,死循环一般在新建 ...

  6. sql 行转列_想要表格行转列?简单几行Python代码搞定

    前言数据的行转列操作,在实际工作过程中应用非常广泛.由于不同人员.不同部门对数据结构的认识是不大相同的,尤其是从基层人员手里拿到的数据,更是五花八门,横七竖八.比如有这样一张成绩表: 乍一看,好像没毛 ...

  7. c语言简单的模拟坐标,C语言模拟实现简单扫雷游戏

    本文指的扫雷是简单模拟电脑中的扫雷游戏,但以我目前的水平,也就只能在黑框中实现 test.c #include #include #include #include "game2.h&quo ...

  8. c语言简单心形代码(c语言简单心形代码手机版)

    c语言心形中间带字程序 #include #include void put_ch(char ch,int a,int b)//在a个空格后,显示b个字符ch int i; for(i=0;i pri ...

  9. c语言简单编程题模板,C语言编程题,比较简单

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include int main(){ int mark=0,falut=0; float answer=0,k=1; char m; ...

最新文章

  1. 【学术】直博和读完硕士再读博,在能力上的差距有多大?
  2. 云上护航服务—保障云上的尖峰时刻
  3. qt爬取网页信息_豆瓣TOP250数据爬取
  4. 详谈DHCP SNOOP等多方面的安全设置(2)
  5. java正则匹配非html字符串_java正则表达式去除html中所有的标签和特殊HTML字符(以开头的)...
  6. 数字签名时间戳服务器的原理
  7. 基于优化反馈的组合在线学习
  8. 计算机专业相关的毕业设计论文合集免费下载
  9. intellij idea jdk language level
  10. Python刷题-5
  11. yml读取环境变量_读取yml配置文件中的值
  12. sql like 通配符_《SQL必知必会》学习笔记
  13. opencv︱图像的色彩空間cvtColor(HSV、HSL、HSB )及相关色彩学
  14. 数据库与表的操作之编辑表结构(ALTER TABLE)
  15. 阿里这样的高并发系统是如何做限流的?
  16. linq 连接mysql_如何:使用 LINQ 查询数据库 - Visual Basic | Microsoft Docs
  17. SystemVue介绍
  18. mysql图书管理系统er图,图书管理系统er图.doc
  19. Word VBA:MathType公式与Latex公式切换
  20. (八) 一起学 Unix 环境高级编程 (APUE) 之 信号

热门文章

  1. 职业教育计算机教学,关于职业教育中计算机教学的思考
  2. 2的n次方计算,支持大整数,nodejs代码
  3. 计算机实验word42,Word2010计算机实验报告--.docx
  4. Oracle数据保护DataGuard安装和配置一
  5. oracle truncate很慢,ORACLEl数据库truncate分区表很慢问题 | 信春哥,系统稳,闭眼上线不回滚!...
  6. 航电多校第二场-1001-Total Eclipse
  7. 微信小程序实现视频试看功能
  8. 如何利用CAD快速生成断面图
  9. JAVA+微信JSAPI支付
  10. 贪吃的大嘴java_贪吃大嘴怪游戏下载|贪吃大嘴怪安卓版下载v1.0.2-乐游网安卓下载...