c 简易文本编辑器 t t

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课题46:简易文本编辑器(2人)。要求:

1) 具有图形菜单界面;

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

3) 可正确存盘、取盘;

4) 正确显示总行数。

#include

#include

#include

#include

#define MAX 10000

#define _CRT_SECURE_NO_DEPRECATE //在vs中取消warning的警告

void menu();

void shuru(char text[]);

void bc(char text[]);

void dakai(char text[]);

void dayin(char text[]);

void chazhao(char text[],int l);

void tihan(char text[],int l);

int strindex(char text[],char t[],int i2,int l);

void shanchu(char p[],int l);

void cs(char text[]);

void charu(char text[],int l);

void tuichu(int status);

char text[MAX]=""; //文本编辑域

char name[20]=""; //文件保存的位置

int status=0; //显示是否保存过的状态

int ntext; //文本编辑的位置

void dakai(char text[])

{

system("cls");

FILE *fp;

char pd,ch;

char name[30];

int i=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();

}

void bc(char text[])

{

system("cls");

FILE *fp;

char pd;

char tmp;

int i;

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;

}

}

}

}

void cs(char text[])

{

int i;

for (i=0;i

{

text[i]='\0';

}

ntext=0;

status=0;

}

int strindex(char text[],char t[],int i2,int l) //查找要操作的数据的位置(模式匹配)

{

int i1=l,j=0;

while (i1

{

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

{

j ;

i1 ;

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

}

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

{

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

j=0;

//子串从头开始匹配

}

}

if (j>=i2)

{

return(i1-i2);

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

else

return(-1); //模式匹配不成功

}

void menu()

{

system("cls");

time_t timep;

time (&timep);

printf("%s",ctime(&timep));

printf("\n\n\n\n\n\n\n\n\n\t\t\tWelcom to use our TXT edition system!\n");

printf("\n\n\t\t\t 欢迎您使用文本编辑器软件!\n");

printf("\n\n\n\n\n\n\n\n\npress Enter to continue...\n");

getchar();

相关文档
最新文档