您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > c++简易文本编辑器.txt
课题46:简易文本编辑器(2人)。要求:1)具有图形菜单界面;2)查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除;3)可正确存盘、取盘;4)正确显示总行数。#includestdio.h#includestdlib.h#includetime.h#includestring.h#defineMAX10000#define_CRT_SECURE_NO_DEPRECATE//在vs中取消warning的警告voidmenu();voidshuru(chartext[]);voidbc(chartext[]);voiddakai(chartext[]);voiddayin(chartext[]);voidchazhao(chartext[],intl);voidtihan(chartext[],intl);intstrindex(chartext[],chart[],inti2,intl);voidshanchu(charp[],intl);voidcs(chartext[]);voidcharu(chartext[],intl);voidtuichu(intstatus);chartext[MAX]=;//文本编辑域charname[20]=;//文件保存的位置intstatus=0;//显示是否保存过的状态intntext;//文本编辑的位置voiddakai(chartext[]){system(cls);FILE*fp;charpd,ch;charname[30];inti=0;printf(输入A:确定打开文件(未保存的数据将会丢失)M:返回主菜单);fflush(stdin);pd=getchar();if(pd=='A'||pd=='a'){printf(请输入要打开文件名字(例如c:\\a.txt));scanf(%s,name);while((fp=fopen(name,r))==NULL){printf(\n打开文件失败,请重新输入要打开的文件名:);scanf(%s,name);}cs(text);while(!feof(fp)){ch=fgetc(fp);text[i]=ch;i++;}text[i]='\0';ntext=i;fclose(fp);printf(\n文件读取成功\n文件内容为\n);dayin(text);}if(pd=='M'||pd=='m')menu();}voidbc(chartext[]){system(cls);FILE*fp;charpd;chartmp;inti;printf(\n输入【A】保存;任意键返回主菜单不保存\n);fflush(stdin);pd=getchar();if(!(pd=='A'||pd=='a')){menu();}else{if(name[20]==NULL){printf(\n请输入保存文件名(例如:c:\\a.txt):);scanf(%s,name);}while((fp=fopen(name,w+))==NULL){printf(文件不存在,请重新输入文件名:);scanf(%s,name);}printf(\nA:确定;B:取消:);while(scanf(%c,&tmp)!=EOF){if(tmp=='A'||tmp=='a'){for(i=0;intext;i++)fprintf(fp,%c,text[i]);fclose(fp);status=1;printf(\n文件保存成功\n);break;}if(tmp=='B'||tmp=='b'){break;}}}}voidcs(chartext[]){inti;for(i=0;intext;i++){text[i]='\0';}ntext=0;status=0;}intstrindex(chartext[],chart[],inti2,intl)//查找要操作的数据的位置(模式匹配){inti1=l,j=0;while(i1ntext&&ji2){if(text[i1]==t[j])//继续匹配下一个字符{j++;i1++;//主串和子串依次匹配下一个字符}else//主串、子串指针回溯重新开始下一次匹配{i1=i1-j+1;//主串从下一个位置开始匹配j=0;//子串从头开始匹配}}if(j=i2){return(i1-i2);}//返回匹配的第一个字符的下标elsereturn(-1);//模式匹配不成功}voidmenu(){system(cls);time_ttimep;time(&timep);printf(%s,ctime(&timep));printf(\n\n\n\n\n\n\n\n\n\t\t\tWelcomtouseourTXTeditionsystem!\n);printf(\n\n\t\t\t欢迎您使用文本编辑器软件!\n);printf(\n\n\n\n\n\n\n\n\npressEntertocontinue...\n);getchar();loop:system(cls);printf(\n\n\n\n\t\t******************简易文本编辑器*****************\n\n);printf(\t\t\t\t----0.清空内容--\n);printf(\t\t\t\t----1.打开文件--\n);if(ntext==0){printf(\t\t\t\t----2.输入内容--\n);}else{printf(\t\t\t\t----2.继续输入--\n);}printf(\t\t\t\t----3.查找------\n);printf(\t\t\t\t----4.插入------\n);printf(\t\t\t\t----5.删除------\n);printf(\t\t\t\t----6.替换------\n);printf(\t\t\t\t----7.显示内容--\n);printf(\t\t\t\t----8.保存------\n);printf(\t\t\t\t----9.退出------\n);printf(\n\t\t*********************选项************************\n);printf(\n\t\t\t\t输入选项0-9:);charn;fflush(stdin);n=getchar();if(n='0'&&n='9'){switch(n){case'0':cs(text);break;case'1':dakai(text);break;case'2':shuru(text);break;case'3':chazhao(text,0);break;case'4':charu(text,1);break;case'5':shanchu(text,0);break;case'6':tihan(text,0);break;case'7':dayin(text);break;case'8':bc(text);break;case'9':tuichu(status);default:break;}}else{printf(\n输入有误,请重新输入:);fflush(stdin);n=getchar();}system(pause);gotoloop;}voidchazhao(chartext[],intl){system(cls);inti,t,a=-1;charpattern[20],bd,pd;printf(原文为:\n);dayin(text);printf(请输入您要查找的内容);scanf(%s,pattern);printf(您查找的内容是:%s\n,pattern);t=strlen(pattern);loop:a=strindex(text,pattern,t,l);if(a!=-1){l=a+t;}inths=1,ls=0;for(i=0;i=a;i++){ls++;if(text[i]=='\n'){hs++;ls=0;}}if(a==-1){printf(查找到结尾没有找到\n输入R将重头查找;任意键返回主菜单);l=0;fflush(stdin);pd=getchar();}else{printf(已经找到在第%d行第%d列,输入R继续查找下一处;任意键返回主菜单,hs,ls);fflush(stdin);bd=getchar();if(bd=='R'||bd=='r')gotoloop;}if(pd=='R'||pd=='r'){l=0;chazhao(text,l);}}voiddayin(chartext[]){system(cls);printf(现在文本的内容为:\n);printf(%s\n,text);inths=1,i;for(i=0;intext;i++){if(text[i]=='\n'){hs++;}}printf(\n文本共有%d行\n,hs);}voidshuru(chartext[]){system(cls);printf(请输入内容(输入@结束输入并返回主菜单):\n);printf(%s,text);charc;inti=ntext,j=ntext;fflush(stdin);while((c=getchar())!='@'){text[i]=c;i++;ntext=i;continue;}intcout=0,zf=0,h=1,hs=1,zfs=0;for(;coutntext;cout++){zf++;if(text[cout]=='\n'){h++;zf--;}if(text[cout]=='')zf--;}for(cout=j;coutntext;cout++){zfs++;if(text[cout]=='\n'){hs++;zfs--;}if(text[cout]=='')zfs--;}printf(统计:文本一共有%d个字符,%d行,本次输入了%d个字符,%d行\n,zf,h,zfs,hs);}voidshanchu(charp[],intl){inti,a=-1,t2=0;charx[20],px,pd,pdx,c;system(cls);printf(%s,p);printf(\n输入【A】执行查找删除内容;任意键返回主菜单:);fflush(stdin);px=getchar();if(px=='a'||px=='A'){printf(\n输入您要删除的内容,以@结束:);fflush(stdin);while((c=getchar())!='@'){if(c=='@'){break;}else{x[t2]=c;t2++;continue;}}loop:a=strindex(p,x,t2,l);inths=1,ls=0;for(i=0;i=a;i++){ls++;if(p[i]=='\n'){hs++;ls=0;}}if(a==-1){printf(已查找结束,您要删除的内容不存在\n输入【R】重新输入要删除的内容;其他键将返回主菜单:);l=0;fflush(stdin);pdx=getchar();}else{printf(你要删除的内容在第%d行第%d列\n输入【A】确定删除;输入【B】寻找下个词;其他键将返回主菜单:,hs,ls);fflush(stdin);pd=getchar();l=t2+a;if(pd=='a'||pd=='A'){for(i=a;intext;i++){p[i]=p[i+t2];}ntext=ntext-t2;printf(删除成功,删除后的内容为:\n%s\n,text);}elseif(pd=='b'||pd=='B')gotoloop;}if(pdx=='r'||pdx=='R')shanchu(text,l);}}voidcharu(chartext[],intl
本文标题:c++简易文本编辑器.txt
链接地址:https://www.777doc.com/doc-4347577 .html