简单行编辑程序
c程序实验报告一 c程序的运行环境及运行方法

c程序实验报告一 c程序的运行环境及运行方法一、C程序的运行环境C程序是需要在计算机上运行的,因此它需要一个运行环境。
C语言最常见的运行环境是Windows和Unix/Linux。
1. Windows运行环境在Windows环境下,可以使用Microsoft Visual Studio或Code::Blocks等集成开发环境(IDE)来编写和运行C程序。
Visual Studio是一种比较常见且功能强大的IDE,它集成了调试器、编辑器和编译器。
在Visual Studio中,可以直接输入C代码,编辑并编译运行,也可以在命令行使用编译器gcc来编译运行C程序。
2. Unix/Linux运行环境在Unix/Linux环境下,可以使用诸如打开源软件组合(GCC)之类的编译器来编写和运行C程序。
GCC是一种功能齐全的C编译器,它在大多数Unix系统上都可用。
在Unix/Linux环境下,C程序可以在命令行上使用gcc编译并运行。
C程序的运行方法主要包括两种:使用命令行运行C程序和在IDE中运行C程序。
1. 命令行运行C程序使用GCC编译器将C代码编译为可运行二进制文件,然后在命令行上运行该二进制文件即可运行C程序。
以下是在Linux环境下的例子:(1)编写一个简单的C程序hello.c:```c#include <stdio.h>(2)使用gcc编译这个程序:$ gcc -o hello hello.c-o指定输出文件名,hello是可执行文件名。
(3)在终端上运行程序:$ ./hello输出:Hello World!2. 在IDE中运行C程序在IDE中运行C程序可以通过以下步骤完成:(1)打开IDE(例如Visual Studio)并创建一个新项目。
(2)在新项目上创建一个新的C源代码文件并输入C代码。
(3)编译代码,IDE将使用内置的编译器将C代码编译为可执行文件。
(4)运行程序,IDE将启动应用程序并附加调试器,编译器会自动转换代码并在调试器中执行。
爱普生培训资料:创建程序

EPSON RC+ 7.0(Ver.7.0)用户指南 Rev.3
209
7. 创建 SPEL+应用程序
操作界面
操作窗口 使用与 EPSON RC+ 7.0 一起提供的操作窗口。您可以配置 EPSON RC+ 7.0,这样在 Windows 启动后,EPSON RC+ 7.0 将以自动模式启动,其会自动打开操作窗口。 操作员可以选择 64 个程序。也可以选择使用“暂停/继续”按钮、I/O 监视器、机器人 管理器和系统历史查看器。
210
EPSON RC+ 7.0(Ver.7.0)用户指南 Rev.3
7. 创建 SPEL+应用程序
7.1.3 开机时自动启动
您的应用程序可以 Windows 用户自动登录并在 Windows 启动后启动您的 SPEL+项 目。 请参阅 4.2.7 自动启动 。
EPSON RC+ 7.0(Ver.7.0)用户指南 Rev.3
若要使用操作窗口让程序启动和停止,控制装置必须从[设置]-[设置控制器]-[控制 器]-[配置]中设置设为 Self。 有 关 配 置 EPSON RC+ 7.0 自 动 启 动 的 详 细 信 息 , 请 参 见 操 作 一 章 中 的 “ 启 动 模式 ”。
远程控制 使用远程控制打开/关闭电机,将机器人返回起始点,启动程序等。可以用一个简单 的按钮盒或可以连接 PLC。 使用远程控制时,控制装置必须在[设置]-[设置控制器]-[SPEL 控制器板]-[配置]中设 置为远程。
编写和运行简单的应用程序从运行菜单中选择运行窗口或按下f5开始命令的快捷键来运行该程712应用程序布局在编写应用程序之前您需要确定您的应用程序的使用目的以及该项目构建的方式
学习如何在程序编辑器中进行代码书签的使用

学习如何在程序编辑器中进行代码书签的使用在编程过程中,我们经常会发现一些重要的代码行或位置,希望能够快速定位和标记,方便以后的查找和编辑。
对于这种需求,程序编辑器提供了一种很有用的功能,即代码书签的使用。
通过代码书签,我们可以在代码中设置标记,并随时跳转到这些标记的位置。
本文将介绍如何在程序编辑器中使用代码书签,并针对常见的几款程序编辑器进行详细的操作说明。
一、Visual Studio Code中的代码书签使用1. 在Visual Studio Code中,可以通过快捷键Ctrl + F2设置或取消代码书签。
选中想要设置书签的行,按下Ctrl + F2,即可在该行添加一个代码书签。
再次按下Ctrl + F2则会取消该书签。
2. 可以通过快捷键Ctrl + Shift + F2或者Ctrl + 数字(1-9)来跳转到已设置的代码书签。
按下Ctrl + Shift + F2将跳转到第一个书签,Ctrl + 1将跳转到编号为1的书签。
3. 在编辑器的侧边栏可以看到已设置的代码书签列表。
点击列表中的一个书签即可跳转到该书签所在的行。
二、Sublime Text中的代码书签使用1. 在Sublime Text中,可以通过快捷键Ctrl + F2设置或取消代码书签。
选中想要设置书签的行,按下Ctrl + F2,即可在该行添加一个代码书签。
再次按下Ctrl + F2则会取消该书签。
2. 可以通过快捷键F2或Shift + F2来跳转到已设置的代码书签。
按下F2将跳转到下一个书签,Shift + F2将跳转到上一个书签。
3. 在编辑器的侧边栏可以看到已设置的代码书签列表。
点击列表中的一个书签即可跳转到该书签所在的行。
三、Eclipse中的代码书签使用1. 在Eclipse中,可以通过快捷键Ctrl + Shift + F bookmark设置或取消代码书签。
选中想要设置书签的行,按下Ctrl + Shift + F即可在该行添加一个代码书签。
SublimeText多光标编辑技巧

SublimeText多光标编辑技巧第一章:SublimeText简介SublimeText是一款功能强大的文本编辑器,广泛被程序员和开发人员使用。
它提供了许多高级功能和定制化选项,使用户能够更高效地编辑代码和文本。
其中一个特色功能就是多光标编辑,它可以让用户同时对多个文本区域进行编辑,大大提高了编辑的效率。
第二章:使用多光标编辑SublimeText的多光标编辑功能非常简单而且直观。
只需要按下“Ctrl” 键(Windows平台)或者“Command” 键(Mac平台)+左键点击需要编辑的文本区域,就可以在该处创建一个光标。
用户可以通过按住“Ctrl”(或“Command”)键不放并且用鼠标左键点击其他地方,来创建多个光标。
这些光标可以同时编辑,复制,剪切和粘贴。
第三章:多光标编辑的实际应用多光标编辑功能可以应用于各种场景中,下面列举了一些常见的实际应用:1.多行编辑:用户可以同时在多行文本的开始或结束处创建光标,然后进行相同的编辑操作。
例如,用户可以在多行代码的开头处添加注释,而不需要逐行添加。
2.批量编辑:用户可以通过多光标编辑功能将相同的文本或代码块复制到多个位置。
用户只需要在一个位置插入文本,然后使用多光标编辑功能在其他位置上同时插入。
这在编写HTML标签,复制粘贴文件路径等任务中非常有用。
3.多点选择编辑:用户可以使用多光标编辑功能选中多个文本区域,然后同时进行编辑操作。
这在需要将不连续的文本区域进行相同的变更时非常实用。
例如,用户可以选中一篇文字中的多个关键词,然后一次性将它们全部替换。
第四章:扩展多光标编辑功能SublimeText还可以通过安装插件来扩展多光标编辑功能。
下面是一些常用的插件:1.Emmet:Emmet插件提供了一套强大的缩写语法,可以快速生成和编辑HTML和CSS代码。
它支持多光标编辑,在多个位置同时生成代码,极大地提高了前端开发的效率。
2.SelectUntil:SelectUntil插件允许用户选择文本直到特定字符或特定符号。
Tutorial 3 Matlab M文件编辑调试器的使用

Tutorial 3 Matlab M文件编辑调试器的使用MATLAB 程序编制方法有两种方式。
一种称为行命令方式,就是在命令窗中一行一行地输入程序(例如前几小节所输入的命令),计算机每次执行一行命令,只能编写简单的程序,在入门时可以用这种方式。
如果程序比较复杂,一行一行地输入命令可能无法完成所需要进行的任务,这时就应使用另一种方式,把程序写成一个由多行语句组成的文件,让MATLAB 执行这个文件。
例如,要求从1 加到1 000 的连加和运算,如果采用命令行的方式就非常麻烦,如果采用编写成M(M-file)文件的形式来执行就很方便。
一、M文件编辑调试器的基本操作M 文件的编辑(Editor)和调试(Debugger)是在MATLAB 的M 文件编辑调试器中进行的,若需要对M 文件进行调试,还需要MATLAB 运行环境的支持。
该编辑器既为基本文本文件的编辑提供了图形用户界面,又可以用于其他文本文件的编辑,同时还可以进行M 文件的调试工作,调试方法在以后的章节中会有详细介绍。
可以采用以下方法启动M 文件编辑调试器。
(1) 方法一:创建一个新的M 文件时,可以在操作桌面快捷工具栏中单击“建立新文件”按钮或选择菜单命令File→New→M-File,启动M 文件编辑调试器。
(2) 方法二:在操作桌面快捷工具栏中单击“打开文件”按钮或选择菜单命令File→Open打开一个已经存在的M 文件,从而启动M 文件编辑调试器。
(3) 方法三:在命令窗口中输入edit 命令时也可以启动M 文件编辑调试器。
打开后的界面如图1所示。
图1 M 文件编辑调试器在编辑调试器中输入如下几行语句。
sum=0for i=1:1000sum=sum+iend可以看到语句中两个关键词for 和end 是以蓝色字体显示,以文件名test1.m 保存该文件。
在命令窗口输入语句test1 并按回车键执行,则命令窗口中飞快地滚动显示计算结果如下。
机器人编程说明

指令介绍1、运动指令移动指令包含三条:MOVJ、MOVL、MOVCMOVJ:关节移动指令,即在运动过程中以关节的方式运动;指令格式:说明:MOVJ代表指令,LP表示局部变量,0表示标号,用于区别使用,VJ表示速度,最大速度为100%,PL为平滑度,范围0-9。
MOVL:直线运动指令,即在运动过程中以直线的方式运动;指令格式:说明:MOVL代表指令,LP表示局部变量,2表示标号,用于区别使用,VL表示速度,最大速度为1999,PL为平滑度,范围0-9。
MOVC:圆弧运动指令,即在运动过程中以圆弧的方式运动。
指令格式:说明:MOVC代表指令,LP表示局部变量,2表示标号,用于区别使用,VL表示速度,最大速度为1999,PL为平滑度,范围0-9。
说明:一段圆弧轨迹通必须是由三段圆弧指令实现的,三段圆弧指令分别定义了圆弧的起始点、中间点、结束点。
注释:局部变量(LP) :在某个程序中所使用的变量和其他程序中的相同变量不冲突。
例如您在程序一中使用了LP0,您也可以在程序二中使用LP0,这样是不会产生矛盾的。
全局变量(GP) :在此系统中我们还设置了全局变量,意思是您如果在一个程序中使用了GP0,而后您就不可以在其他的程序中使用GP0了,否则程序会出现混乱现象,系统将会默认将第二次设定的值覆盖第一次设定的值。
平滑度(PL) :简单的说就是过渡的弧度,确定您是以直角方式过渡还是以圆弧方式过渡。
假如两条直线要连接起来,怎么连接,就需要您对此变量进行设置。
1、逻辑指令WAIT指令:条件等待指令。
指令格式:当您所设定的条件满足时,则程序往下执行;当您所设定的条件不满足时,则程序一直停在这里,知道满足您所设定的条件为止。
但是,后面还有一个时间的设定,当条件不满足时,在等待后面的设定时间之后,会继续执行下面的程序。
JUMP指令:条件跳转指令,包含无条件跳转指令和条件跳转指令两种类型。
格式一:无条件跳转指令格式二:条件跳转指令说明:在使用此条指令时,要配合使用标号指令。
实现一个基于命令行文本编辑器【一】
实现一个基于命令行的文本编辑器选择本项目作业的同学,必须本人独立完成。
功能:1、打开文件2、保存文件3、能够对文件进行查找4、能够对文件进行替换5、能够对文件进行删除要求:1、不能使用Cstring.h,string等类,只能使用char* 来处理字符串2、能够动态的申请和分配内存上交的内容:1、.cpp、.h、.exe文件2、文件命名规则:学号.cpp 学号.h 学号.exe程序具体要求:1、在命令行下运行学号.exe 出现界面如下2、按输入参数a)-o filename 打开文件b)–h 帮助信息,提示各个参数的格式和含义c)–s filename 保存文件到filename指定的路径和文件名d)–f stringtofind 查找stringtofind字符串,并将查到的字符串的个数在屏幕上显示,并将个数写到文件学号_result.txt中,路径和最后-s中的filename同一个路径e)–r sourcestring targetstring 替换字符串,将文件中的sourcestring替换成targetstring,将替换多少处显示在屏幕上,并将替换的个数和替换后的文本都写道学号_result.txt中,路径要求同上f)–d stringtodelete 删除字符串,将文件中的stringtodelete删除,将删除多少处显示在屏幕上,并将删除的个数和删除后的文本都写到学号_result.txt中,路径要求同上g)–q 退出程序3、当前文件的问题:sample:打开了c:\aaa.txt在-d 删除之后,再执行-r时是要在原来的aaa.txt上进行-r操作,即不受-d的影响一旦执行了-s当前的文件就变成了-s保存的结果如:打开c:\aaa.txt在-d 删除之后,执行了-s再执行-r时就是要在删除之后的文本上进行-r操作了4、学号_result.txt这个文件每次写都是在文件的最后追加,不要覆盖原来的内容要求所有的次数独占一行,写法为:-f10 -r29 -d3所有的文本写完后空两行sample:源代码下载:/2013/01/04/169/#include "stdio.h"#include "stdlib.h"struct line{char text[81];int num; /*行号*/struct line *next; /*指向下一个输入项目的指针*/struct line *prior; /*指向前一个项目的指针*/};struct line *start; /*指向表中第一个项目的指针*/ struct line *last; /*指向表中作后一个项目的指针*/ struct line *find(int),*dls_store(struct line *);void patchup(int,int),delete_text(),list(),save(char *),load(char *); menu_select();enter(int linenum);void main(int argc,char *argv[]){char s[80],choice,fname[80];// struct line *info;int linenum=1;start=NULL;last=NULL;if(argc==2) load(argv[1]);/*装入命令行上的文件*/do{choice=menu_select();switch(choice){case 1:printf("\t行号:");gets(s);linenum=atoi(s);enter(linenum);break;case 2:delete_text();break;case 3:list();break;case 4:printf("\t文件名:");gets(fname);save(fname);break;case 5:printf("\t文件名:");gets(fname);load(fname);break;case 6:exit(0);}}while(1);}/* 显示菜单,供用户选择*/menu_select(){char s[80];int c;printf("\t\t1.输入\n");printf("\t\t2.删除一行\n");printf("\t\t3.显示一行\n");printf("\t\t4.文件存盘\n");printf("\t\t5.装入文件\n");printf("\t\t6.退出\n");do{printf("\n\n\t\t请按数字选择:");gets(s);c=atoi(s);}while(c<0||c>6);return(c);}/*将文本插在指定行端部*/enter(int linenum){struct line *info;//char t[81];for(;;){/* */info=(struct line *)malloc(sizeof(struct line));if(!info){printf("\t! 内存不够!\n");return(NULL);}printf("%d:",linenum);gets(info->text);info->num=linenum;if(*info->text){if(find(linenum)) patchup(linenum,1);if(*info->text) start=dls_store(info);}else break;linenum++;}return(linenum);}/*当文本内容插在文件中间时其下面的内容的行号必须增加1,而*/ /*删除时,被删除的文本后面的行号必须减1 */void patchup(int n,int incr){struct line *i;i=find(n);while(i){i->num=i->num+incr;i=i->next;}}/*按行号排序后插入*/struct line *dls_store(struct line *i){struct line *old,*p;if(last==NULL){i->next=NULL;i->prior=NULL;last=i;return(i);}p=start;old=NULL;while(p){if(p->num){old=p;p=p->next;}else{if(p->prior){p->prior->next=i;i->next=p;p->prior=i;return start;}i->next=p;i->prior=NULL;p->prior=i;return(i);}}old->next=i;i->next=NULL;i->prior=old;last=i;return start;}/*删除一行*/void delete_text(){struct line *info;char s[80];int linenum;printf("\t行号:");gets(s);linenum=atoi(s);info=find(linenum);if(info){if(start==info){start=info->next;if(start) start->prior=NULL;else last=NULL;}else{info->prior->next=info->next;if(info!=last)info->next->prior=info->prior;else last=info->prior;}free(info);patchup(linenum+1,-1);}}/*查找一行文本*/struct line *find(int linenum){struct line *info;info=start;while(info){if(linenum==info->num) return(info);info=info->next;}return(NULL);}/*显示文本*/void list(){struct line *info;info=start;while(info){printf("%d:%s\n",info->num,info->text);info=info->next;}printf("\n\n");}/*存文件*/void save(char *fname){struct line *info;char *p;FILE *fp;if((fp=fopen("text.txt","w"))==NULL){printf("\t文件打不开!\n");exit(0);}printf("\t正在存入文件:\n");info=start;while(info){p=info->text;while(*p) putc(*p++,fp);//putc('\r',fp);putc('\n',fp);info=info->next;}fclose(fp);}/*装入文件*/void load(char *fname){struct line *info,*temp;char *p;FILE *fp;//int t,size,inct;int size,inct;if((fp=fopen("text.txt","r"))==NULL){printf("\t文件打不开!\n");exit(0);}while(start){temp=start;start=start->next;free(temp);}printf("\n\t正装入文件!\n");size=sizeof(struct line);start=(struct line*)malloc(size);if(!start){printf("\n\t内存已经用完!");return;}info=start;p=info->text;inct=1;while((*p=getc(fp))!=EOF){p++;while((*p=getc(fp))!='\n') p++;//getc(fp); /*丢掉'\n' */*p='\0';info->num=inct++;info->next=(struct line*)malloc(size);if(!info->next){printf("\n\t内存已经用完!");return;}info->prior=temp;temp=info;info=info->next;p=info->text;}temp->next=NULL;last=temp;free(info);start->prior=NULL;fclose(fp);}按输入参数a) -o filename 打开文件b) –h 帮助信息,提示各个参数的格式和含义c) –s filename 保存文件到filename指定的路径和文件名d) –f stringtofind 查找stringtofind字符串,并将查到的字符串的个数在屏幕上显示,并将个数写到文件学号_result.txt中,路径和最后-s中的filename同一个路径e) –r sourcestring targetstring 替换字符串,将文件中的sourcestring替换成targetstring,将替换多少处显示在屏幕上,并将替换的个数和替换后的文本都写道学号_result.txt中,路径要求同上f) –d stringtodelete 删除字符串,将文件中的stringtodelete删除,将删除多少处显示在屏幕上,并将删除的个数和删除后的文本都写到学号_result.txt中,路径要求同上g) –q 退出程序这个大概该怎么实现,怎么能输入多次指令呢?我之前编写的简单程序都是执行完就马上关闭的,这该怎么实现??我来帮他解答满意回答2012-11-28 02:02这不算文本编辑器吧。
创建空白新文档的四种方式
创建空白新文档的四种方式一、使用文本编辑器创建空白新文档使用文本编辑器是最简单的一种方式来创建空白新文档。
在Windows系统中,可以使用记事本、Notepad++等文本编辑器;在Mac系统中,可以使用TextEdit等文本编辑器。
只需打开文本编辑器,然后点击“新建”或者按下Ctrl+N快捷键,即可创建一个空白新文档。
在文档中可以输入任意内容,包括文字、代码等。
二、使用办公软件创建空白新文档办公软件如Microsoft Office、WPS Office等也提供了创建空白新文档的功能。
在Microsoft Office中,可以打开Word、Excel、PowerPoint等应用程序,然后点击“新建文档”按钮,即可创建一个空白新文档。
在WPS Office中,可以打开Writer、Spreadsheets、Presentation等应用程序,然后选择“新建”来创建空白新文档。
这些办公软件不仅可以输入文字,还可以进行格式设置、插入图片等操作。
三、使用命令行创建空白新文档对于喜欢使用命令行的用户来说,也可以通过命令行方式来创建空白新文档。
在Windows系统中,可以打开命令提示符,然后使用命令行命令“echo.>filename.txt”来创建一个空白新文档。
在Mac系统中,可以打开终端,然后使用命令行命令“touch filename.txt”来创建空白新文档。
这种方式比较适合熟悉命令行操作的用户,可以提高操作效率。
四、使用在线文档编辑器创建空白新文档除了本地的文本编辑器和办公软件,还可以使用在线文档编辑器来创建空白新文档。
例如Google Docs、Microsoft Office Online 等都提供了在线编辑文档的功能。
只需登录相应的在线文档编辑器,然后点击“新建文档”按钮,即可创建一个空白新文档。
在线文档编辑器具有与本地办公软件相似的功能,可以实时编辑、协作编辑等。
总结通过以上四种方式,我们可以方便地创建空白新文档。
sublime text 3在行前插入递增数字序号的方法
sublime text 3在行前插入递增数字序号的方法【1】介绍Sublime Text 3编辑器Sublime Text 3是一款功能强大、界面简洁的文本编辑器,广泛应用于程序开发、文案撰写等领域。
它具备高度的自定义性,可以让用户根据需求调整编辑器的功能和布局。
今天我们将介绍如何在Sublime Text 3中为行前插入递增数字序号。
【2】阐述如何在行前插入递增数字序号的方法在Sublime Text 3中,有多种方法可以为行前插入递增数字序号。
以下我们将介绍两种实用且简单的方法。
方法一:使用插件Sublime Text 3有丰富的插件资源,可以通过安装特定的插件实现行前插入递增数字序号的功能。
以下为简要操作步骤:1.打开Sublime Text 3,点击“偏好设置”>“插件”;2.在“安装”标签下,搜索“Number List”等类似功能的插件;3.下载并安装插件;4.重启Sublime Text 3,激活插件。
方法二:使用文本替换如果你不想依赖插件,可以使用Sublime T ext 3内置的文本替换功能实现递增数字序号的插入。
以下为操作步骤:1.选中需要添加序号的文本;2.右键点击,选择“查找”;3.在“查找内容”框中输入以下代码:`^(?=d)`;(解释:^表示行的开始,d表示数字,(?=d)表示下一行可能是数字)4.在“替换为”框中输入以下代码:`$1`;(解释:$1表示匹配到的第一个数字)5.点击“替换”按钮,完成递增数字序号的插入。
【3】详细步骤及操作指南以下是针对方法二的详细操作步骤及截图指南:1.打开Sublime Text 3,选中需要添加序号的文本;2.右键点击选中区域,选择“查找”(如图1);3.在弹出的“查找”窗口中,输入代码`^(?=d)`,并设置“查找内容”为“正则表达式”(如图2);4.点击“查找下一个”按钮,找到第一个符合正则表达式的位置;5.按住Shift键,点击“替换”按钮,将查找内容替换为空;6.输入以下代码:`$1`,并设置“替换为”为“文本”(如图3);7.点击“替换”按钮,完成当前行的递增数字序号插入;8.使用Ctrl+G快捷键,重复步骤5-7,直至全文完成递增数字序号的插入。
vi常用指令
vi常用指令VI是一款非常实用的文本编辑器。
它经常被用于程序编写、文件编辑等方面。
VI的操作比较简单,只要掌握几个常用的指令,就可以轻松完成许多工作。
本文将会介绍VI的常用指令,帮助读者更好地使用VI。
一、VI的三种模式VI有三种模式:命令模式、插入模式和底行模式。
在命令模式下,我们可以用各种命令对文本进行编辑。
在插入模式下,我们可以直接输入文本。
在底行模式下,我们可以执行一些特定的命令,如保存文件、退出VI等。
二、进入/退出VI进入VI的方法有两种:一个是使用命令vi,另一个是使用命令vim。
两者的效果是一样的,只是vi是VIM的简称。
退出VI的方法有两种:一个是在命令模式下输入命令:wq!表示保存并退出;另一个是在命令模式下输入命令:q!表示不保存并退出。
三、命令模式下的常用指令1.移动光标:我们可以使用h、j、k、l命令将光标左移、下移、上移、右移。
2.插入文本:在命令模式下,我们可以按下i、a、o等指令,进入插入模式,开始编辑文本。
3.删除文本:我们可以使用命令x、dd等来删除文本。
其中x命令会删除光标所在位置的一个字符,而dd命令可以删除一整行。
4.复制/粘贴文本:我们可以使用命令y、p等来复制/粘贴文本。
其中y命令会复制选定的文本,而p命令会将文本粘贴到光标下方。
5.替换文字:我们可以使用命令:s/old/new/g,将old替换为new,其中g表示全局匹配。
6.查找替换:我们可以使用命令:%s/old/new/gc,将old替换为new,其中gc表示全局匹配并要求确认。
四、底行模式下的常用指令1.保存文件:我们可以在命令模式下输入命令:w,保存当前的编辑内容。
2.查找文本:我们可以在命令模式下输入命令:/text,用于查找text。
按下n可以继续查找下一个匹配项。
3.退出VI:我们可以在命令模式下输入命令:q,表示退出VI。
4.保存并退出VI:我们可以在命令模式下输入命令:wq,用于保存当前的编辑内容并退出VI。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
简单行编辑程序 题目:简单行编辑程序 班级:计算机科学与技术(非师范) 完成日期:2010-6-25
1.需求分析 以无歧义的陈述说明程序设计的任务,强调的是程序要做什么?并明确规定: 文本编辑程序是利用计算机进行文字加工的基本软件工具,实现对文本文件的插入、删除等修改操作。限制这些操作以行为单位进行的编辑程序称为行编辑程序。
(1) 输入的形式和输入值的范围; 无范围 (2) 输出的形式; 字符串 (3) 程序所能达到的功能; 实现以下4条基本编辑命令: (1) 行插入。格式:i 将插入活区中第行之后 (2)行删除。格式:d[□] 删除活区中第行(到第行)。两种格式的例子是:“d10↙”和“d10□14↙” (3)活区切换。格式:n 将活区写入输出文件,并从输入文件中读入下一段,作为新的活区。 (4)活区显示。格式:p
(4) 测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。 2.概要设计 说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。 typedef struct text { char string[80];//存储每一行的元素 struct text *next;//指向后一个节点的指针 struct text *pre;//指向前一个节点的指针 int num;//每一行元素的长度 int flat;//确定此行是否被删除的标志 }text; FILE *fp,*out;//fp是执行被打开的文件,out指向被写入的文件 text *head;//链表的头指针 int n=0,sum,delnum,xiugai=0,page=0; //file://修改用来指示文件是否被修改过,如果修改过才回存盘。page用来计算显示的 //file://页数.delnum用来存储被删除的字节数,sum存储一页的总字节数 3.详细设计 实现概要设计中定义的所有数据类型,对每个操作只需要写出伪码算法;对主程序和其他模块也都需要写出伪码算法(伪码算法达到的详细程度建议为:按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序);画出函数和过程的调用关系图。
cmd=getchar(); printf("\n请输入命令(按E键退出):"); cmd=getchar(); switch(cmd) { case 'e': case 'E': if(xiugai==1) saveall(); freemem(); if(fp) fclose(fp); if(out) fclose(out); system("cls"); return 0; case 'o': case 'O': Openfiles(); break; case 'p': case 'P': Createlist(); display(); break; case 'n': case 'N': saveanddisplay(10); break; case 'd': case 'D': del(); break; case 'i': case 'I': insert(); break; default:printf("\n\n\n!!!输入错误!!!");
4.调试分析 当我调试程序时发现前面的子程序调用后面的子程序竟然是错误的,明明已经定义了的子程序竟然没有定义这令我大为不解不过后来当我把被调用的程序放到前面,程序就顺利运行了。
5.用户使用说明 说明如何使用你编写的程序,详细列出每一步的操作步骤。 当你使用这个程序时,会出现一个简单的提示界面,你可以选择相应的help选项,来看操作说明。
6.测试结果 列出你的测试结果,包括输入和输出。这里的测试数据应该完整和严格,最好多于需求分析中所列。 7.附录 带注释的源程序。如果提交源程序软盘,可以只列出程序文件名的清单。 #define NULL 0 #define OK 0 #include #include #include #include #include #include typedef struct text { char string[80];//存储每一行的元素 struct text *next;//指向后一个节点的指针 struct text *pre;//指向前一个节点的指针 int num;//每一行元素的长度 int flat;//确定此行是否被删除的标志 }text; FILE *fp,*out;//fp是执行被打开的文件,out指向被写入的文件 text *head;//链表的头指针 int n=0,sum,delnum,xiugai=0,page=0; //file://修改用来指示文件是否被修改过,如果修改过才回存盘。page用来计算显示的 //file://页数.delnum用来存储被删除的字节数,sum存储一页的总字节数
void byebye()//没有具体用处,只是写着玩的,在屏幕上显示一个bye { puts("\t\t\t******** * * ********"); puts("\t\t\t* * * * * "); puts("\t\t\t* * * * * "); puts("\t\t\t* * * * * "); puts("\t\t\t******** * ********"); puts("\t\t\t* * * * "); puts("\t\t\t* * * * "); puts("\t\t\t* * * * "); puts("\t\t\t******** * ********");
}
void HELP()//帮助函数,显示一些命令的格式 { printf("\n\t**********************************************************\n"); printf("\t** 打开文件: o **\n"); printf("\t** 行插入格式: i **\n"); printf("\t** 行删除格式: d[] **\n"); printf("\t** 活区切换格式: n **\n"); printf("\t** 活区显示格式: p **\n"); printf("\t** 注意:在执行所有命令前必须先用o命令打开文件,并 **\n"); printf("\t** 用p命令显示出来!!! **\n"); printf("\t**********************************************************\n"); system("pause"); printf("\n\n\n");
}
void ABOUT()//也是写着玩的 { printf("\n\t\t*****************************************\n"); printf("\t\t** welcome to the program **\n"); printf("\t\t** all work and no play make jack adull boy **\n"); printf("\t\t** enjoy your work **\n"); printf("\t\t*****************************************\n"); system("pause"); system("cls"); printf("\n\n\n"); }
void Createlist()//建立一个十个节点的链表,是文本中的一页 { text *p1,*p2; p1=p2=(text *)malloc(sizeof(text)); head=NULL; while(n<10) { n=n+1; if(n==1) head=p1; else { p2->next=p1; p1->pre=p2; p1->flat=0; } p2=p1; p1=(text *)malloc(sizeof(text)); } p2->next=NULL; }
void freemem()//释放链表所占的内存 { text *p; for(p=head;head!=NULL;) { head=p->next; free(p); p=head; } }
int Openfiles()//打开文件的函数 { char name[30],outname[30];