c简易文本编辑器tt.docx

上传人:b****6 文档编号:5606032 上传时间:2022-12-28 格式:DOCX 页数:21 大小:18.88KB
下载 相关 举报
c简易文本编辑器tt.docx_第1页
第1页 / 共21页
c简易文本编辑器tt.docx_第2页
第2页 / 共21页
c简易文本编辑器tt.docx_第3页
第3页 / 共21页
c简易文本编辑器tt.docx_第4页
第4页 / 共21页
c简易文本编辑器tt.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

c简易文本编辑器tt.docx

《c简易文本编辑器tt.docx》由会员分享,可在线阅读,更多相关《c简易文本编辑器tt.docx(21页珍藏版)》请在冰豆网上搜索。

c简易文本编辑器tt.docx

c简易文本编辑器tt

课题46:

简易文本编辑器(2人)。

要求:

1)具有图形菜单界面;

2)查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除;

3)可正确存盘、取盘;

4)正确显示总行数。

 

#include

#include

#include

#include

#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;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;i

{

text[i]='\0';

}

ntext=0;

status=0;

}

intstrindex(chartext[],chart[],inti2,intl)//查找要操作的数据的位置(模式匹配)

{

inti1=l,j=0;

while(i1

{

if(text[i1]==t[j])//继续匹配下一个字符

{

j;

i1;

//主串和子串依次匹配下一个字符

}

else//主串、子串指针回溯重新开始下一次匹配

{

i1=i1-j1;//主串从下一个位置开始匹配

j=0;

//子串从头开始匹配

}

}

if(j>=i2)

{

return(i1-i2);

}//返回匹配的第一个字符的下标

else

return(-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=at;

}

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;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(;cout

{

zf;

if(text[cout]=='\n')

{h;zf--;}

if(text[cout]=='')

zf--;

}

for(cout=j;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=t2a;

if(pd=='a'||pd=='A')

{

for(i=a;i

{

p[i]=p[it2];

}

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)//向文本中插入内容

{

system("cls");

inti=0,t=0,t2=0,a=-1,b;

charcr[20]="",pd,x[500],c,d;

printf("\n当前文本信息为:

\n");

printf("%s",text);

printf("\n输入您要在哪个内容前插入,以@结束:

");

fflush(stdin);

while((c=getchar())!

='@')//用一个数组接收要插入在哪个内容之前

{

if(c=='@')

{

break;

}

else

{

cr[t]=c;

t;

continue;

}

}

loop:

a=strindex(text,cr,t,l);//查找并返回要插入的位置点

inths=1,ls=0;

for(b=0;b

{

ls;

if(text[b]=='\n')

{

hs;

ls=0;

}

}

if(a==-1)

{

printf("\n查找到结尾没有找到插入点,输入【R】查找其他;按其他键返回菜单:

\n");

l=0;

fflush(stdin);

d=getchar();

fflush(stdin);

}

else

{

printf("\n您要插入的位置是第%d行,第%d列之前\n【A】.不是此位置向后继续找插入点\n【B】.在此位置插入\n按其他键返回菜单\n请选择:

",hs,ls1);

fflush(stdin);

pd=getchar();

if(pd=='a'||pd=='A')

{

l=at;

gotoloop;

}

elseif(pd=='b'||pd=='B')

{

printf("\n\n输入您要插入的内容,以@结束:

");

fflush(stdin);

while((c=getchar())!

='@')

{

if(c=='@')

{

break;

}

else

{

x[t2]=c;

t2;

continue;

}

}

for(i=ntext;i>=a;i--)

{

text[it2]=text[i];

}

for(i=0;i

{

text[ia]=x[i];

}

ntext=ntextt2;

printf("\n当前文本信息为:

\n");

for(i=0;i<=ntext-1;i)

printf("%c",text[i]);

printf("\n文本插入成功\n");

fflush(stdin);

getchar();

}

}

if(d=='r'||d=='R')

{

l=0;

charu(text,l);

}

status=0;

}

voidtihan(charp[],intl)//内容替换

{

intt=0,t1=0,i,a,b;

charc,th[20],d,d1,bth[20];

inti2;

system("cls");

printf("\n当前文本信息为:

\n");

for(i2=0;i2<=ntext-1;i2)

printf("%c",p[i2]);

printf("\n输入要被替换的内容,以@结束:

");

fflush(stdin);

while((c=getchar())!

='@')//t指替换前内容的长度

{

if(c=='@')

{

break;

}

else

{

bth[t]=c;

t;

continue;

}

}

loop:

a=strindex(p,bth,t,l);//查找要被替换的内容的位置

inths=1,ls=0;

for(b=0;b

{

ls;

if(p[b]=='\n')

{

hs;

ls=0;

}

}

if(a==-1)

{

printf("\n查找到结尾没有找到要被替换的内容\n输入【R】查找其他内容,按其他键返回主菜单键\n");

l=0;

d=getchar();

fflush(stdin);

}

else

{

printf("\n\n已经找到要查找的数据在第%d行第%d列\n输入【A】继续向后查找相同内容\n输入其他键将进行替换操作\n请选择:

",hs,ls1);

fflush(stdin);

l=ta;

charpd;

pd=getchar();

if(pd!

='a'&&pd!

='A')

{

printf("\n是否要替换该内容?

\nA:

替换给内容;其他键返回主菜单\n请选择:

");

fflush(stdin);

d1=getchar();

if(d1=='a'||d1=='A')

{

printf("\n输入要替换的内容,以@结束:

");

fflush(stdin);

while((c=getchar())!

='@')//t1指替换后的内容长度

{

if(c=='@')

{

break;

}

else

{

th[t1]=c;

t1;

continue;

}

}

if(t==t1)//将要被替换的内容和替换后的内容进行长度比较

{

for(i=0;i

p[ia]=th[i];

}

else

{

if(t>t1)

{

for(i=0;i

{

p[ia]=th[i];

}

for(i=at1;i

{

p[i]=p[it-t1];

}

ntext=ntextt1-t;

}

else

{

for(i=ntext;i>=a;i--)

{

p[it1-t]=p[i];

}

for(i=0;i

{

p[ia]=th[i];

}

ntext=ntextt1-t;

}

}

printf("替换成功");

printf("\n当前文本信息为:

\n");

for(i2=0;i2<=ntext-1;i2)

printf("%c",p[i2]);

getchar();

status=0;

}

}

else

gotoloop;

}

if(d=='r'||d=='R')

tihan(text,l

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1