没有合适的资源?快使用搜索试试~ 我知道了~
用栈实现简单的行编辑程序,主要功能有:行插入(格式:i<行号><回车><文本><回车>,即 将<文本>插入活区中的第<行号>行之后);行删除(格式:d<行号1>[ <行号2>]<回车>, 删除活区中第<行号1>行(到第<行号2>行),两种格式的例子是:“d10 ”和“d10 14 ”);活页切换(格式:n<回车>, 将活区写入输出文件,并从输入文件中读入下一段,作为新的活区); 活区显示(格式:p<回车>, 逐页地(每页20行)显示活区内容,每显示一页之后由用户决定是否继续显示以后各页(如果存在)。印出的每一行要前置行号和一个空格符,行号固定占4位,增量为1);
资源推荐
资源详情
资源评论
目 录
前 言...............................................................................................................................2
正 文...............................................................................................................................3
采用类 C 语言定义相关的数据类型........................................................................3
各模块的伪码算法....................................................................................................5
调试分析....................................................................................................................8
软件使用说明..............................................................................................................10
总 结.............................................................................................................................11
参考文献......................................................................................................................13
致 谢.............................................................................................................................15
附件Ⅰ 部分源程序代码.............................................................................................17
摘 要
关键词: 行插入;行删除;活页切换;活区显示;子函数的调用,文件打开
与关闭;
主要功能有:
行插入:(格式:i<行号><回车><文本><回车>,即 将<文本>插入活区
中的第< 行号>行之后);
行删除:(格式:d<行号 1>[ <行号 2>]<回车>, 删除活区中第<行号
1>行(到第<行号 2>行),两种格式的例子是:“d10 ”和“d10 14 ”);
活页切换:(格式:n<回车>, 将活区写入输出文件,并从输入文件中读
入下一段,作为新的活区);
活区显示:(格式:p<回车>, 逐页地(每页 20 行)显示活区内容,每显
示一页之后由用户决定是否继续显示以后各页(如果存在)。印出的每一行要前
置行号和一个空格符,行号固定占 4 位,增量为 1);
前 言
一个简单的行编辑程序的功能是:接受用户从中终端输入的程序或者数据,
并存入用户的数据区。由于用户在终端上进行输入时,不能保证不出差错,因此
在程序编辑中,“每接受一个字符即存入用户数据区”的做法显然不是最恰当的。
较好的作法是,设立一个输入缓冲区,用以接受用户输入的一行字符,然后逐行
存入用户数据区。允许用户输入数据出差错,并在发现有误时及时更正。
文本编辑程序是一个面向用户的系统服务程序,广泛用于源程序的输入和修改 ,
甚至用于报刊和书籍的编辑排版以及办公室的公文书信的起草和润色。文本编辑
的实质是修改字符数据的形式或格式。虽然各种文本编辑程序的功能强弱不同,
但是其基本操作是一致的,一般包括串的查找,插入和删除等操作。
如果要插入或删除一行,就要涉及行表的插入和删除。若被删除的行是所在
页的起始行,则还要修改页表中相应页的起始行号。所以在作行和页的删除操作
时,可以只对行表和页表作相应的修改,不必删除所涉及的字符。这可以节省不
少时间。
2
正 文
问题描述
(1)用栈实现简单的行编辑程序,主要功能有:行插入(格式:i<行号><
回车><文本><回车>,即 将<文本>插入活区中的第<行号>行之后);行删除
(格式:d<行号 1>[ <行号 2>]<回车>, 删除活区中第<行号 1>行(到第<
行号 2>行),两种格式的例子是:“d10 ”和“d10 14 ”); 活页切换(格式:n<
回车>, 将活区写入输出文件,并从输入文件中读入下一段,作为新的活区);
活区显示(格式:p<回车>, 逐页地(每页 20 行)显示活区内容,每显示一页
之后由用户决定是否继续显示以后各页(如果存在)。印出的每一行要前置行号
和一个空格符,行号固定占 4 位,增量为 1);
(2)设文件每行不超过 320 个字符,很少超过 80 个字符,由学生依据软
件工程的测试技术自己确定,注意测试边界数据,如首行、尾行。算法对于合法
的输入数据都能产生满足规格说明要求的结果;
(3)算法对于精心选择的典型、苛刻而带有刁难性的几组输入数据能够得
出满足规格说明要求的结果;对算法实现过程中的异常情况能给出出错信息;
(4)较高要求:加入复杂操作,如对某行进行串替换等
。
采用类 c 语言定义相关的数据类型
typedef struct text/*定义结构体 txt*/
{
char string[80];/*定义数组*/
struct text *next;/*定义结构体 txt 型指针 next*/
3
struct text *pre; /*定义结构体 txt 型指针 pre*/
int num;/*定义整型变量 num 用于计算每行字符数*/
int flat;/*该行是否被删除标志*/
}text;
int Createlist()/*创建链表*/
{
text *p1,*p2;/*结构体 txt 型指针 p1,p2*/
p1=p2=(text *)malloc(sizeof(text));/*创建节点并申请分配空间*/
head=NULL;/*置指针为空*/
while(n<10)/*当行数小于 10 循环*/
{
n=n+1;/*N 自增*/
if(n==1) head=p1;/*如果 N=1,头指针指向第一个节点*/
else/*否则*/
{
p2->next=p1;/*新插入节点指向原来节点*/
p1->pre=p2;/*p1 的前驱为 p2*/
p1->flat=0;/*p1 的行删除标志位置零*/
}
p2=p1;
p1=(text *)malloc(sizeof(text));/*为新插入的字符申请空间*/
}
p2->next=NULL;/*p2 节点的 next 域置空*/
}
text *p;/*定义结构体型指针 P*/
#define NULL 0/*宏定义 常量 NULL 为 0*/
#define OK 0; /*宏定义 常量 OK 为 0*/
FILE *fp,*out;/*定义文件指针 fp 和 out*/
char cmd;/*定义字符型变量 cmd 用于接收输入的字符*/
4
剩余16页未读,继续阅读
资源评论
gao877197285
- 粉丝: 16
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功