行编辑器c语言,简单的行编辑器(C语言).doc
简单的行编辑器(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相关推荐
- C语言简单程序的编写和调试,上机1--C语言简单程序的编写和调试.doc
上机1--C语言简单程序的编写和调试.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印 ...
- python实现文本编辑器_Python-tkinter实现简单的文本编辑器
Python-tkinter实现简单的文本编辑器 利用tkinter实现简单的文本编辑器.创建一个简单的文本编辑器.可以用读文件的方式在一个文本域里显示一些文字供用户编辑. 当用户退出程序时(通过 Q ...
- c语言简单课程设计报告,C语言课程设计报告—范例
<C语言课程设计报告-范例>由会员分享,可在线阅读,更多相关<C语言课程设计报告-范例(18页珍藏版)>请在人人文库网上搜索. 1.XX学院C语言课程设计报告课程名称: C语言 ...
- php简单加减乘除,C++_C 语言简单加减乘除运算,C语言也可以进行加减乘除运算 - phpStudy...
C 语言简单加减乘除运算 C语言也可以进行加减乘除运算,但是运算符号与数学中的略有不同,见下表. 加法 减法 乘法 除法 求余数 数学 + - × ÷ 无 C语言 + - * / % 加号.减号与数学 ...
- c语言简单的while语句,C语言入门 — while语句
C语言入门,while语句,实现在一定条件下的循环,可以用while实现死循环,while的使用语法如下: while(执行条件) { 执行代码: } 1.使用while,实现死循环,死循环一般在新建 ...
- sql 行转列_想要表格行转列?简单几行Python代码搞定
前言数据的行转列操作,在实际工作过程中应用非常广泛.由于不同人员.不同部门对数据结构的认识是不大相同的,尤其是从基层人员手里拿到的数据,更是五花八门,横七竖八.比如有这样一张成绩表: 乍一看,好像没毛 ...
- c语言简单的模拟坐标,C语言模拟实现简单扫雷游戏
本文指的扫雷是简单模拟电脑中的扫雷游戏,但以我目前的水平,也就只能在黑框中实现 test.c #include #include #include #include "game2.h&quo ...
- c语言简单心形代码(c语言简单心形代码手机版)
c语言心形中间带字程序 #include #include void put_ch(char ch,int a,int b)//在a个空格后,显示b个字符ch int i; for(i=0;i pri ...
- c语言简单编程题模板,C语言编程题,比较简单
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include int main(){ int mark=0,falut=0; float answer=0,k=1; char m; ...
最新文章
- C# dynamic使用
- 一文读懂 Spring的前世今生
- Sql注入工具php,phpcms框架SQL注入--基于Havij工具
- 【译】CodeIgniter HMVC模块扩展使用文档
- 不得不赞!京东开源FaceX-Zoo,一站式人脸识别研究平台
- P4878 道路修建-美国
- 【Flink】Flink 时间之 timerService().registerEventTimeTimer 主要做了什么
- APPIUM+Python+HTMLTestRunner(转)
- Spring中ClassPathXmlApplication与FileSystemXmlApplicationContext的区别
- 安卓 IOS上架流程
- 重磅!首届倍增科学技术研究院高级研究员研讨会胜利召开
- 玩转数据可视化之R语言ggplot2:(四)单一基础几何图形绘制
- 李开复给大学生的第6封信:选择的智慧
- 出方向链路负载均衡技术(原理部分)
- Tivoli Workload Scheduler (TWS)
- latex如何设置字体并加粗_Latex设置字体大小,加粗,加下划线,变斜体_孩纸气_新浪博客...
- win10停止更新_你的win10即将终止!各大版本服务终止日期大全,准备好了吗?...
- 3小时GIS入门教程(三)ArcGIS 10基本操作
- Ubuntu修改桌面分辨率
- css3波浪纹路_css3线条波浪动画效果