简单行编辑程序
- 格式:doc
- 大小:295.00 KB
- 文档页数:18
文本编辑器的程序设计及代码示例在计算机科学领域,文本编辑器是一种用于编辑文本文件的应用程序。
它允许用户创建、修改和保存文本文件,并提供了一系列功能来方便用户进行编辑操作。
本文将介绍文本编辑器的程序设计原理,以及示范几个常见的代码示例。
一、程序设计原理文本编辑器的程序设计需要考虑以下几个方面:1. 用户界面设计:一个好的文本编辑器应具备直观友好的用户界面,提供各种操作选项和快捷键,使用户能够轻松地进行文本编辑。
2. 文本处理功能:文本编辑器应具备基本的文本处理功能,如插入和删除文本、查找和替换、拷贝和粘贴等。
这些功能需要通过合适的数据结构和算法来实现。
3. 文本格式化:文本编辑器应支持对文本进行格式化操作,如自动对齐、缩进、换行等。
4. 多标签支持:多标签功能允许用户同时打开多个文本文件,并在它们之间切换。
这要求程序设计中能够有效地管理多个文本文件的打开、关闭和切换。
二、代码示例下面是几个简单的代码示例,用于展示文本编辑器的一些基本功能。
1. 创建文本文件```pythondef create_file(filename):# 创建一个新的文本文件file = open(filename, "w")file.close()```2. 打开文本文件```pythondef open_file(filename):# 打开文本文件并返回文件对象 file = open(filename, "r")return file```3. 插入文本```pythondef insert_text(file, position, text): # 在指定位置插入文本file.seek(position)content = file.read()file.seek(position)file.write(text + content)```4. 删除文本```pythondef delete_text(file, start, end):# 删除指定位置的文本file.seek(start)content = file.read()file.seek(start)file.write(content[:end - start])```5. 查找和替换文本```pythondef find_replace(file, old_text, new_text):# 在文本中查找指定内容并替换file.seek(0)content = file.read()new_content = content.replace(old_text, new_text)file.seek(0)file.write(new_content)```6. 关闭文本文件```pythondef close_file(file):# 关闭文本文件file.close()```三、总结通过以上代码示例,我们展示了文本编辑器的一些基本功能,包括创建文件、打开文件、插入和删除文本、查找和替换文本以及关闭文件。
SublimeText编辑器使用秘籍第一章:SublimeText简介SublimeText是一款功能强大、灵活性高的文本编辑器,被广泛用于程序开发和编程。
它提供了许多有用的功能和快捷键,使得编码工作更加高效和愉快。
本章将介绍SublimeText的基本特点和安装方法。
SublimeText的独特之处在于它的多行编辑功能,可以同时编辑多个光标位置的文本。
这对于批量重命名、代码块插入等操作非常有用。
SublimeText还支持多种编程语言和文件格式,并且可以通过插件增加更多功能。
安装SublimeText十分简单。
只需要访问官方网站,下载适合您的操作系统版本,然后按照安装向导进行操作即可。
安装完成后,打开SublimeText就可以开始使用了。
第二章:常用功能和快捷键SublimeText提供了许多常用功能和快捷键,以便开发者更加高效地编码。
本章将介绍一些常用的功能和相应的快捷键。
1. 查找和替换:您可以使用Ctrl + F(在当前文件中查找)或者Ctrl + H(在当前文件中查找和替换)快捷键打开查找和替换窗口。
您还可以使用Ctrl + Shift + F在整个项目中查找。
2. 多行编辑:按住Ctrl(Windows)或Cmd(Mac)键,点击光标进入您要编辑的位置,然后开始编辑即可。
您还可以使用Ctrl + D选择下一个相同的单词进行多行编辑。
3. 代码折叠:您可以使用Ctrl + Shift + [折叠代码块,Ctrl + Shift + ]展开代码块。
4. 自动完成:SublimeText可以自动补全代码,提高编码速度。
按下Tab键可以进行代码片段补全,按下Ctrl + Space进行词汇补全。
5. 代码片段:您可以使用自定义的代码片段来快速插入重复的代码,提高开发效率。
代码片段必须保存在SublimeText的User 目录下的Snippets文件夹中。
第三章:插件的安装和使用SublimeText的插件是其强大的功能之一。
// 《数据结构》//第一组:行编辑程序(+注释)#include<stdio.h>#include<stdlib.h>#include<malloc.h>#include<string.h>#include<conio.h>#define STACK_MAX_SIZE 100 //初始化分配空间最大值#define STACKINCREMENT 10 //空间增量struct SqStack{char *base;char *top;int stacksize;}; //定义结构体,头尾指针void Initstack(SqStack &S) //建立栈{S.base=(char*)malloc(STACK_MAX_SIZE *sizeof(char)); //分配空间,每个元素为一个存储单元if(!S.base) exit(1); //存储分配失败S.top=S.base; //初始化,头尾指针指向同一位置S.stacksize=STACK_MAX_SIZE; //栈的容量为100}void push(SqStack &S,char e) //插入元素e为栈顶元素{if(S.top-S.base>=S.stacksize) //判断是否满栈{S.base=(char*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(char)); //追加栈的容量10if(!S.base) exit(1); //存储分配失败S.top=S.base+S.stacksize; //头指针指向栈顶元素的上一个位置S.stacksize+=STACKINCREMENT; //此时栈的长度为110}*S.top++=e;}char pop(SqStack &S,char e) //若栈不空,则删除S的栈顶元素,用e返回其值{if(S.top==S.base) //return false;e=*--S.top; // 等价于e=*(S.top-1); --S.top; e=*S.top;return e;}void clearstack(SqStack &S) //清空栈{S.top=S.base;}void destorystack(SqStack &S) //销毁栈{free(S.base); //释放空间S.top=S.base;}bool stackempty(SqStack &S) //查看栈是否为空,如果空,返回true,否则返回fasle {if(S.top==S.base)return true;return false;}void printstack(SqStack &S) //打印栈内元素{char e;while(!stackempty(S)) //判断循环{pop(S,e); //压栈,e为栈顶元素printf("%d",e); //输出e}}void main() //主函数{char ch,e;SqStack S,D; //定义两个栈S和Dprintf("请输入字符:\n");Initstack(S); //构造栈SInitstack(D); //构造栈Dch=getchar();while(ch!=EOF) //如果ch不是终止字符{while(ch!=EOF&&ch!='\n') //ch不是终止字符,且不是'\n'{switch(ch) //循环{case'#':pop(S,e); break; //遇#,删除栈顶元素case'@':clearstack(S); break; //遇@,清空栈Sdefault:push(S,ch); break; //否则,插入字符ch}ch=getchar(); //输入字符}while(!stackempty(S)) //如果栈S非空,循环{e=pop(S,e);push(D,e);}while(!stackempty(D)) //如果栈D非空,循环{e=pop(D,e);printf("%c",e);}clearstack(S);if(ch!=EOF)ch=getchar();}destorystack(S); //销毁栈S}/*遇到问题:1、头指针和尾指针的指向问题2、初始化空间容量问题,追加空间增量3、Switch分支语句判断问题*/。
计算机工程学院课程设计报告设计名称:数据结构课程设计选题名称:简单的行编辑器姓名:学号:专业班级:软件工程软件102 系(院):计算机工程学院设计时间:设计地点:软件工程实验室、教室<2>用户可从键盘上输入字符,以*结尾表示输入字符结束,界面上会输出用户输入的字符,以及行编辑的功能选择项。
(如输入如下字符beijing huan ying ni *)<3>输入选择1,则依次输出:字母个数:17数字个数:0空格个数:4字符总数:21是否继续使用(Y/N):<4.1>选择Y,则出现行编辑器的功能选择,<4.2>如果第三步结束选择N,则输出**********谢谢使用**********<,再次需要进行行编辑器功能选择:输入选择2;则输出“请输入要统计的某一字符”提示用户输入要查找的字符假如输入i;则输出:i在文章中出现次数为:4;是否继续使用(Y/N)<**********谢谢使用**********<则输出行编辑器的功能选择项目;选择3;输出“请输入要删除子串的起始位置和长度:”提示用户输入,如果输入0 7输出“删除某一子串后:”huan ying ni**********谢谢使用**********<5>其他字符测试;例如用户输入:beijing BEIJING 520*输出字母个数:14数字个数:3空格个数:2字符总数:19统计字符i出现次数为2;删除从8号位器长度为7的字串后输出字符为beijing 520五用户手册1.运行程序,首先出现主界面。
主界面首行显示“欢迎使用文本编辑器”,输出提示信息“请输入要编辑的字符”,然后界面显示用户输入的字符。
然后主界面文本编辑器的功能菜单,功能菜单包括三个选项:选项一:统计字数,选择该项可进字数统计,当用户输入字符结束后,选择功能选项一,主界面回自动统计各字符数,然后输出。
2;选项二:统计出现次数,选择该项可进行对文章中某一字符出现字数的统计,当用户选择功能二时,主界面回输出提示信息,提示用户输入要统计的字符,用户可从键盘任意输入字符,以回车键结束。
简述运行java程序的步骤和方法运行Java程序的步骤和方法Java是一种跨平台的编程语言,可以在不同的操作系统上运行。
为了运行Java程序,需要经过以下步骤:1. 安装Java开发工具包(JDK)Java开发工具包是Java程序开发的必备工具。
在安装JDK之前,需要先确认操作系统的位数(32位或64位),然后下载对应版本的JDK安装文件。
安装JDK时,需要按照安装向导的步骤进行操作,通常只需要选择默认选项即可完成安装。
2. 编写Java程序使用任何文本编辑器编写Java程序,保存为.java文件。
Java程序通常以public class开头,包含一个main方法,是程序的入口点。
Java的语法相对简单,但需要遵循一定的规范和约定。
3. 编译Java程序在命令行中进入Java程序所在的目录,使用javac命令编译Java 程序。
例如,输入javac HelloWorld.java即可编译名为HelloWorld.java的Java程序。
编译成功后,会生成一个.class文件,其中包含了Java程序的字节码。
4. 运行Java程序在命令行中输入java命令,加上类名(不包含.java扩展名),即可运行Java程序。
例如,输入java HelloWorld即可运行名为HelloWorld的Java程序。
程序运行过程中,可以在控制台输出信息,也可以接受用户的输入。
5. 调试Java程序如果Java程序出现了错误,可以使用调试工具进行调试。
调试工具可以帮助开发者找出程序运行时的错误,并提供一些调试信息。
常用的Java调试工具包括Eclipse、IntelliJ IDEA、NetBeans等。
除了以上步骤,还有一些Java程序开发的基本技巧和注意事项:1. 使用面向对象的编程思想Java是一种面向对象的编程语言,可以使用类、对象、继承、封装等面向对象的特性来开发程序。
面向对象的编程思想可以使程序结构更加清晰,易于维护和扩展。
学习如何在程序编辑器中进行代码片段的删除和编辑在进行软件开发和编程时,我们常常需要在程序编辑器中进行代码片段的删除和编辑。
代码片段的删除和编辑是程序员日常工作中非常基础和常见的操作,掌握删除和编辑代码片段的技巧能提高我们的开发效率,减少出错的可能性。
下面将介绍一些常用的方法和技巧供大家学习和参考。
1. 删除代码片段在程序编辑器中删除代码片段可以使用以下方法:(1)按键删除:在编辑器中选中要删除的代码片段后,按下“Delete” 或“Backspace” 键即可快速删除选中的代码。
(2)剪切操作:在编辑器中选中要删除的代码片段后,按下快捷键“Ctrl + X” 或者右键点击选中的代码片段选择“剪切”功能即可删除选中的代码。
(3)删除行:如果要删除整行代码,可以将光标放在要删除的代码行上,按下“Ctrl + D”快捷键,编辑器将会删除当前所在行的代码。
(4)多行删除:如果要删除多行代码,可以按住“Shift”键,同时用鼠标选中多行代码,然后进行删除操作,选中的多行代码都会被删除。
2. 编辑代码片段在程序编辑器中编辑代码片段可以使用以下方法:(1)插入文本:将光标放在想要插入文本的位置上,直接开始键入新的代码即可。
编辑器会自动将新的代码插入到光标所在位置,并移动光标到下一行或者新的代码所在位置。
(2)替换文本:在编辑器中选中要替换的文本后,键入新的代码即可。
选中的文本将会被替换成新的代码。
(3)复制粘贴:选中要复制的代码后,可以按下快捷键“Ctrl + C”进行复制,然后将光标移动到需要粘贴的位置,按下快捷键“Ctrl + V”进行粘贴操作。
(4)撤销和重做:在编辑器中,通过快捷键“Ctrl + Z” 可以撤销上一步操作,通过快捷键“Ctrl + Y” 可以重做撤销的操作,这也是一种快速恢复代码片段的方法。
3. 快捷键和代码补全许多程序编辑器都提供了快捷键和代码补全功能来加快代码片段的删除和编辑。
这些功能可以大大提高我们的开发效率,减少输入错误。
选题一:迷宫与栈问题【问题描述】以一个mXn的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。
设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。
【任务要求】1)首先实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。
求得的通路以三元组(i,j,d)的形式输出。
其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。
如,对于下列数据的迷宫,输出一条通路为:(1,1,1),(1,2,2),(2,2,2),(3,2,3),(3,1,2),…。
2)编写递归形式的算法,求得迷宫中所有可能的通路。
3)以方阵形式输出迷宫及其通路。
【测试数据】迷宫的测试数据如下:左上角(0,1)为入口,右下角(8,9)为出口。
出口出口选题二:算术表达式与二叉树【问题描述】一个表达式和一棵二叉树之间,存在着自然的对应关系。
写一个程序,实现基于二叉树表示的算术表达式的操作。
【任务要求】假设算术表达式Expression内可以含有变量(a~z)、常量(0~9)和二元运算符(+,-,*,/,^(乘幂))。
实现以下操作:1)ReadExpre(E)—以字符序列的形式输入语法正确的前缀表达式并构造表达式E。
2)WriteExpre(E)—用带括弧的中缀表达式输出表达式E。
3)Assign(V,c)—实现对变量V的赋值(V=c),变量的初值为0。
4)Value(E)—对算术表达式E求值。
5)CompoundExpr(P,E1,E2)--构造一个新的复合表达式(E1)P(E2)【测试数据】1)分别输入0;a;-91;+a*bc;+*5^x2*8x;+++*3^x3*2^x2x6并输出。
2)每当输入一个表达式后,对其中的变量赋值,然后对表达式求值。
选题三:银行业务模拟与离散事件模拟【问题描述】假设某银行有4个窗口对外接待客户,从早晨银行开门(开门9:00am,关门5:00pm)起不断有客户进入银行。
实现一个简单的文本编辑器一个文本编辑器是一款用于编辑文本文件的应用程序。
它提供了基本的文本编辑功能,例如输入、删除、复制、粘贴和保存文本。
一个简单的文本编辑器可以有以下基本特性:1.文本输入和删除功能:用户可以通过键盘输入文本内容,并且可以通过删除键或退格键删除文本。
2.复制和粘贴功能:用户可以选择文本块,并将其复制到剪贴板中。
然后,可以将剪贴板中的文本粘贴到编辑器中的任何位置。
3.文本格式化:用户可以对文本进行格式化,例如设置字体颜色、字体大小、字体样式(例如加粗、斜体等)等。
4.搜索和替换功能:用户可以搜索编辑器中的文本,找到并替换指定的文本。
5.保存和打开文本文件:用户可以将编辑器中的文本保存成一个文本文件,并且可以打开一个已经存在的文本文件进行编辑。
6.撤销和重做功能:用户可以撤销之前的操作,并重做已经撤销的操作。
7.拼写检查和自动纠错功能:编辑器可以检查用户输入的文本中的拼写错误,并根据语言规则自动纠正错误。
8.自动保存:编辑器可以在一定时间间隔内自动保存用户的文件,以防止意外的程序崩溃或电源故障导致数据丢失。
9.多窗口和标签:用户可以同时打开多个编辑器窗口,并在每个窗口中进行不同的编辑。
10.快捷键:编辑器可以提供一些常用功能的快捷键,以方便用户的操作。
11.缩进和对齐:编辑器可以提供自动缩进和对齐功能,以使文本整齐明了。
12.行号和标记:编辑器可以显示行号,并允许用户通过添加标记(例如断点)来快速导航到特定行。
13.支持多种编程语言:编辑器可以针对不同的编程语言提供特定的功能,例如语法高亮、代码折叠等。
当然,上述的特性只是一个简单文本编辑器的基本要求,实际上,现代化的文本编辑器具有更多更强大的功能和特性。
数据结构程序设计实验报告简单行编辑程序院系:计算机科学与技术学院专业:软件工程1班姓名:丁珊珊学号:E01214269日期:2014/9/19一、需求分析1、问题描述:文本编辑程序是利用计算机进行文字加工的基本软件工具,实现对文本文件的插入、删除等修改操作。
限制这些操作以行为单位进行的编辑程序称为行编辑程序。
被编辑的文本文件可能很大,全部读入编辑程序的数据空间(内存)的做法即不经济,又不总能实现。
一种解决方法是逐段的编辑。
任何时刻只把待编辑文件的一段放在内存,称为活区。
试按这种方法实现一个简单的行编辑程序,设文件每行不超过320个字符,很少超过80个字符。
2、此程序具备以下功能:(1)行插入。
格式:i<行号><回车><文本>. <回车>将<文本>插入活区中第<行号>行之后。
(2)行删除。
格式:d<行号1>[<空格><行号2>]<回车>;删除活区中第<行号1>行(到第<行号2>行)。
(3)活区切换。
格式:n<回车>将活区写入输出文件,并从输入文件中读入下一段,作为新的活区。
(4)活区显示。
格式:p<回车>逐页地(每页20行)显示活区内容,在每显示的一页之后请用户决定是否继续显示以后各页(如果存在)。
印出的每一行要前置行号和一个空格符,行号固定占4位,增量为1。
各条命令中的行号均须在活区中各行号范围之内,只有插入命令的行号可以等于活区第一行行号减一,表示插入当前的屏幕中第一行之前,否则命令参数非法。
二、概要设计1、主页面设计2、存储结构设计typedef struct text{char string[SIZE];//存储每一行的元素struct text *next;//指向后一个节点的指针int length;}text,*textp;3、系统功能设计1)行插入2)行删除3)活区切换4)活区显示5)结束4、程序调用关系程序结构流程图:三、详细设计1 、数据结构存储定义typedef struct text{char string[SIZE];//存储每一行的元素struct text *next;//指向后一个节点的指针 int length;}text,*textp;2、行插入int insert(textp &head,FILE *out){int hang,i;textp p,p1;scanf("%d",&hang);p=(textp)malloc(sizeof(text));//为插入行分配空间fflush(stdin);fgets(p->string,80,stdin); /*输入插入行的内容*/p1=head->next;if(head->length==ActiveMaxLen)fputs(p1->string,out);else{if(hang==1){p->next=head->next;head->next=p;head->length++;}else{for(i=2;i<hang;i++)p1=p1->next;p->next=p1->next;p1->next=p;head->length++;}}printf("在第%d行前插入完成\n",hang);return OK;}3、行删除int del(textp &head) //删除d命令对应的函数,用来删max-min中的行,用结构体中的flat表示是否被删除{text *p,*q;int min,max,i;scanf("%d %d",&min,&max);if(head==NULL){printf("\nlist null!\n");return OK;}p=head;for(i=1;i<min;i++)/*找到要删除的第一行的前一行*/p=p->next;for(i=i-1,q=p->next;i<max;i++)/*删除到最后一行*/{p->next=q->next;free(q);q=p->next;}head->length--;printf("第%d行到第%d行删除完成!\n",min,max);return OK;}4、活区切换Status LoadFile(textp head,FILE *fp) /*从文件读内容到活区*/{textp p;for(p=head;p&&(!feof(fp));p=p->next){if(!fgets(p->string,80,fp)) break;p->flat=1;}return 0;}Status SaveFile(textp head,FILE *out) /*存储活区的函数*/{textp p;for(p=head;p;p=p->next)if(p->flat==1){fputs(p->string,out); /*输出活区的内容到指定的文件*/p->flat=0;}return OK;}5、活区显示void display(textp head)//显示P命令对应的函数,用来显示活区的内容{int i;int j=head->length/20;int k=0;textp p=head->next;for(j=0;j<=head->length/20;j++){printf("**********************page%d************************\n",j+1);for(i=20*j+1;i<=head->length;p=p->next,i++) {printf("%2d",i);printf(" %s",p->string);if(i%20==0)break;}printf("是否继续显示下一页,是输入1,否输入0.\n");scanf("%d",&k);if(k==0)break;if(j==head->length/20-1){printf("没有后续页面了\n");break;}}}四、测试分析1.开始界面2.用户输入一个已经存在的文本文件名称——in.txt并回车,程序将读出内容并存入一个新的文本文件——out中。
并输入命令p,显示。
3.输入命令i,在文本文件中插入文本。
4.输入命令d,删除选中文本。
并输入命令p,显示当前活区。
5.输入命令n,切换活区。
并输入命令平,显示。
6.输入命令e,结束程序并清除活区。
五、源程序设计#include<string.h>#include<stdio.h>#include<stdlib.h>#include<io.h>#include<process.h>#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2#define ActiveMaxLen 100#define SIZE 80#define x 20typedef struct text{char string[SIZE];//存储每一行的元素struct text *next;//指向后一个节点的指针int length;}text,*textp;void Createlist(textp &head)//建立一个80个节点的链表,是整个活区的大小{head=(text *)malloc(sizeof(text));int n=0;head->length=0;textp p,q;while(n<80){p=(text *)malloc(sizeof(text));n++;if(n==1){head->next=p;p->next=NULL;q=p;head->length++;}else{p->next=q->next;q->next=p;q=p;head->length++;}}printf("活区创建完成\n");}int del(textp &head)//删除d命令对应的函数,用来删max-min中的行,用结构体中的flat表示是否被删除{text *p,*q;int min,max,i;scanf("%d %d",&min,&max);if(head==NULL){printf("\nlist null!\n");return OK;}p=head;for(i=1;i<min;i++)/*找到要删除的第一行的前一行*/p=p->next;for(i=i-1,q=p->next;i<max;i++)/*删除到最后一行*/{p->next=q->next;free(q);q=p->next;}head->length--;printf("第%d行到第%d行删除完成!\n",min,max);return OK;}void display(textp head)//显示P命令对应的函数,用来显示活区的内容{int i;int j=head->length/20;int k=0;textp p=head->next;for(j=0;j<=head->length/20;j++){printf("**********************page%d************************\n",j +1);for(i=20*j+1;i<=head->length;p=p->next,i++){printf("%2d",i);printf(" %s",p->string);if(i%20==0)break;}printf("是否继续显示下一页,是输入1,否输入0.\n");scanf("%d",&k);if(k==0)break;if(j==head->length/20-1){printf("没有后续页面了\n");break;}}}void freemem(textp &head)//释放链表所占的内存{text *p=head->next;while(p){head->next=p->next;free(p);p=head->next;head->length--;}printf("活区清除\n");}int insert(textp &head,FILE *out){int hang,i;textp p,p1;scanf("%d",&hang);p=(textp)malloc(sizeof(text));//为插入行分配空间fflush(stdin);fgets(p->string,80,stdin); /*输入插入行的内容*/ p1=head->next;if(head->length==ActiveMaxLen)fputs(p1->string,out);else{if(hang==1){p->next=head->next;head->next=p;head->length++;}else{for(i=2;i<hang;i++)p1=p1->next;p->next=p1->next;p1->next=p;head->length++;}}printf("在第%d行前插入完成\n",hang);return OK;void LoadFile(textp &head,FILE *fp,int e) /*从文件读内容到活区*/{textp p=head->next;for(int j=0;j<e;j++)fgets(head->string,81,fp);for(int i=0;i<head->length&&(!feof(fp));i++){fgets(p->string,81,fp);p=p->next;}}void SaveFile(textp head,FILE *out,FILE *in,int &e) /*存储活区的函数*/{textp p=head->next;e=e+80;for(int i=0;i<head->length;p=p->next,i++)fputs(p->string,out);}void HELP()//帮助函数,显示一些命令的格式{printf("\n\t**********************************************************\n");printf("\t *** 行插入格式: i<行号><回车><文本><回车> **\n");printf("\t *** 行删除格式: d<回车><行号1>[<空格><行号2>]<回车> **\n");printf("\t *** 活区切换格式: n<回车> **\n");printf("\t *** 活区显示格式: p<回车> **\n");printf("\t *** 退出格式: e<回车> **\n");printf("\t**********************************************************\n");}void main()//主函数,用来接受命令//编辑函数,用来接受处理编辑命令{int e=0;textp head;FILE *in,*out;char c,inname[30],outname[30];printf("################################欢迎使用行编辑程序#############################\n");HELP();/*打开输入、输出文件*/printf("Enter the infile name:");scanf("%s",inname);printf("Enter the outfile name:");scanf("%s",outname);if((in=fopen("in.txt","r"))==NULL)printf("can't open the file! \n");if((out=fopen(outname,"w"))==NULL){printf("can't iiopen the file!\n");exit(0);}Createlist(head);LoadFile(head,in,e);do{printf("input order:");fflush(stdin);c=getchar();switch(c){case 'p':display(head);break;case 'n':SaveFile(head,out,in,e);LoadFile(head,in,e);printf("活区切换...\n完成\n");break;case 'd':del(head);break;case 'i': /*插入行*/insert(head,in);break;case'e':printf("结束!\n");break;default:printf("\n\n\n!!!input error!!!"); break; /*命令格式非法提示*/}}while(c!='e');freemem(head);}六、用户手册(1)进入程序的界面,出现命令的帮助信息,按任意键开始程序编辑。