简单文本编辑器设计与实现
实验目的:
(1)熟悉并掌握双向链表存储结构实现及其基本操作
(2)熟悉并掌握字符串模式匹配操作
(3)掌握简单文本编辑器的实现
1、实验内容及要求
1)实验内容:
问题描述:输入一页文字,采用动态存储结构存储一页文章,每行最多不超过80个字符,共N行;要求如下:
① 分别统计其中英文字母数和空格数及整篇文章总字数
② 统计某一字符串在文章中出现的次数,并输出该次数
③ 在指定行前插入文本,删除指定行文本
④ 查找定位某单词在文本中的位置
⑤ 装入和保存文本
2)实验要求:
① 用C语言编程实现上述实验内容中的结构定义和算法
② 要有main()函数,并且main()在函数中使用监测数据调用上述算法
③ 试验完成后撰写实验报告
④ 设计如下选择菜单。
1、输入
2、删除一行
3、显示全部
4、单词统计
5、查找定位单词
6、定行位置插入
7、文件存盘
8、装入文件
9、退出
请按数字选择:
2、数据结构设计
Struct line //定为文本数据类型
{
Char text[81];
Int num;//行号
Struct line *next;//指向表中下一个行的指针
Struct line *prior;//指向表中前一个行的指针
};
Struct line *start;//指向表中第一行的指针
Struct line *last;//指向表中最后一行的指针
3、基本操作函数说明
txtLine*find(int linenum)//查找一行文本
//当文本内容插在文件中间时其下面的内容行号必须增加1
//而当删除时,被删除的文本后面的行号必须减1
void patchup(int n,int incr)
txtLine *insert_Line(txtLine *i)//按行号排序后插入
int enter(int linenum)//将文本插在指定行前面
void delete_text()
void list()
void wordnum()//单词统计
void wordfind()//查找定位单词
void save(char *fname)//存文件
void load(char *fname)//装入文件
int menu_select()//显示菜单,供用户选择
4、源代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#include<iostream>
using namespace std;
typedef struct line
{//定义文本行数据
char text[81];
int num;//行号
struct line *next;//指向下一个输入项目的指针
struct line *prior;//指向前一个项目的指针
}txtLine;
txtLine *start;//指向表中第一行的指针
txtLine *last;//指向表中最后一行的指针
txtLine*find(int linenum)//查找一行文本
{
txtLine *info;
info = start;
while(info)
{
if(linenum == info->num)//