主要功能
编辑器主要功能包括以段指针定位小说需要操作的位置,在当前位置插入一个字串,在当前位置前删除长度为m的字串,搜索字串s,保存小说到文件,从文件中读取该小说等基本功能,具体说明如下:
1)定位小说位置:
设计为双链表每个结点为一个包含静态数组的结构体,根据结构体内的段号定位段指针,再输入静态数组下标通过段内偏移查找该段的静态数组的内容。
2)当前位置插入字串:
设计为在当前位置的结点中的静态数组遍历得到目标下标定位插入内容。插入内容的实现先将该结点静态数组的所有内容赋给一个辅助的第三者数组,通过对数组目标下标先往后移动字串长度个单位,再向中间空出来的位置插入字串,如从下标为4插入长度为6的字串,先将下标4之后的6个单位长度内容依次向后移6个单位,再将字串从下标4开始插入。内容插入完成后再将此覆盖需操作的内容。
3)当前位置删除字串:
设计为在当前位置的结点中的静态数组遍历得到目标下表定位删除内容。删除内容的实现先将该结点静态数组的所有内容赋给一个辅助的第三者数组,通过对数组目标下标先加字串m个单位长度定位,在依次将数组内容向前移m个单位覆盖要删除的内容。如从下标4开始删除长度为6的字串,等于下标为4,5,6,7,8,9的数组内容被下标为10,11,12,13,14,15的数组内容覆盖达到删除效果。内容删除完成后再将此覆盖需操作的内容。
4)搜索字串:
设计为定位当前位置结点中的静态数组,通过遍历静态数组中的内容得到字串,当在主串中匹配到字串的第一个内容时依次向后匹配至字串结束,若相同则查找成功,然后继续查找至主串结束,返回字串第一个字的下标,否则查找失败,没有该字串。
5)保存小说到文件:
设计为通过文件流,指定文件存储路径之后,将结点中的数据全部写入文件中,实现数据永久化
6)从文件读取该小说:
设计为通过文件流,根据指定路径打开文件,将文件中的数据有序放进结点中,实现数据结构化
结构体及函数头
typedef struct DNode
{
int para; //段号
int low; //行号
char data[N]; //段落内容
struct DNode *Rlink;
struct DNode *Llink;
}Node;
//初始化
Node*InitList()
Node *Insert(Node *head) //插入字串功能
Node *Delete(Node *head) //删除字串功能
char *search(Node *head) //搜索字串功能
Node *Read(Node **h,char *file_path) //读取文件
int Save(Node *h) //保存文件
//释放全部节点
void Empty(Node*head)
void menu(Node *head) //菜单
主函数
int main()
{
Node *head;
head=InitList();
menu(head);
Empty(head);
return 0;
}
测试结果
(1)、读取文件
(2)、定位插入字串
1、若没有该段,则查找失败
2、若查找成功,输入内容
3、若插入的下标越界,则重新输入
4、若找到位置,插入内容成功
(3)定位删除内容
1、若删除字串的长度超出内容(或下标越界),则重新输入
2、若找到位置,删除内容成功
(4)全文查找字串
通过每段每行查找,查找成功输出下标,否则没有该字串
(5)保存文件
(6)退出程序
1、若选项输入错误,则重新输入
2、退出程序,释放程序内存
(7)文件
我的第一篇博文,希望可以捞点积分,谢谢,哈哈哈。