简单的文本编辑器

article/2025/8/22 17:56:05

今天应同学的需求写了一个文本编辑器可以简单的时间文本的打开、删除、显示、查找、插入的简单功能

C语言代码如下:

 

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <time.h>
#define MAX 10000
#include <string.h>
/*函数原型*/  
void menu();   
void shuru(char text[]);
void bc(char text[]);  
void dakai(char text[]);
void dayin(char text[],int k);
void chazhao(char text[],int l);
int strindex(char s[],char t[],int l);
void shanchu(char p[],int l,char pd);
void cs(char text[]);
void charu(char text[],int l);
int ntext;
/*主函数*/  
void main()
{
menu();}
/*打开文件模块*/
void dakai(char text[])
{system("cls");   FILE *fp;int l;char ch,pd;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);fp=fopen(name,"r");if(fp==NULL)
{printf("打开文件失败\n");system("PAUSE");   }else  
{cs(text);while(!feof(fp)){
ch=fgetc(fp);
text[i]=ch;i++;   }
text[i]='\0';   ntext=i;   fclose(fp);printf("文件读取成功\n文件内容为\n");dayin(text,1);   
printf("如果需要修改请输入7:");
if (pd=='7')
charu(text,l);}
}else (pd=='M'||pd=='m');
menu();   
}
/*保存模块*/
void bc(char text[])
{system("cls");FILE *fp;char name[80];char pd,pdx;char tmp;int i;pd=getchar();printf("返回主菜单不保存输入A;任意键保存");  fflush(stdin);pdx=getchar();if (pdx=='A'||pdx=='a'){
menu();   }else {  printf("请输入保存文件名(例如: c:\\a.txt):");scanf("%s",name);fp=fopen(name,"w+");if (fp==NULL){
printf("文件创建失败");
system("PAUSE");}else {printf("A:保持;B:取消");   
while(scanf("%c",&tmp)!=EOF)
{
if (tmp=='A' || tmp=='a')  
{
for(i=0;i<ntext;i++){
fprintf(fp,"%c",text[i]);  }
fclose(fp);  
printf("A.直接退出程序;任意键继续运行程序");
fflush(stdin);
pd=getchar();
if (pd=='A'||pd=='a'){exit(0);   }break;   }
if (tmp=='B' || tmp=='b'){break;}   }}
}if (pd=='M'||pd=='m')
menu();  }
/*初始化模块*/
void cs(char text[])
{int i;char pd;
pd=getchar();
for (i=0;i<ntext;i++){text[i]='\0';}ntext=0;
if (pd=='M'||pd=='m')
menu();  }  
/*菜单显示模块*/
void menu()
{system("cls");time_t timep;   time (&timep);printf("%s",ctime(&timep));  printf("***************简单的文本编辑器*********************\n");printf("***            0.清空文本内容                    ***\n");if (ntext==0){printf("***            1.输入文本内容                    ***\n");}  else {printf("***            1.继续输入                        ***\n");}printf("***            2.打开文本内容                    ***\n");printf("***            3.删除文本内容                    ***\n");printf("***            4.查找文本内容                    ***\n");printf("***            5.显示文本内容                    ***\n");printf("***            6.保存文本内容                    ***\n");printf("***            7.插入文本内容                    ***\n");printf("***            8.退出文本内容                    ***\n");printf("***            请输入你的选择(0-9)             ***\n");printf("****************************************************\n");printf(" 你的选择是:");char text[MAX];
char n;
ntext=0;while (1)
{
fflush(stdin);fflush(stdin);
n=getchar();
switch (n)
{
case '0': cs(text);break;  case '1': shuru(text);break;
case '2': dakai(text);break;case '3': shanchu(text,0,'a');break;case '4': chazhao(text,0);break;
case '5': dayin(text,1);break;
case '6': bc(text);break;case '7': charu(text,1);break;
case '8': exit(0);
case EOF: bc(text);break;
default : break;
}}
}/*查找*/  
void chazhao(char text[],int l)
{system("cls");int i,t1,a=-1;char pattern[2],bd;printf("请输入要查找的内容");scanf("%s",pattern);dayin(text,0);printf("您查找的内容是:%s\n",pattern);t1=strlen(pattern);a=strindex(text,pattern,l);if (a!=-1)
{l=a+t1;
}int hs=1;for (i=0;i<=a;i++)
{if (text[i]=='\n')
{hs++;   }}if (a==-1)
{printf("查找到结束,没有找到要查找的内容\n重新查找请按--->R;任意键退出");l=0;fflush(stdin);bd=getchar();  }else {printf("已经找到在!第%d行\n继续查找请按--->R;任意键退出",hs);fflush(stdin);bd=getchar();}if (bd=='R'||bd=='r')
{chazhao(text,l);   }  
if (bd=='M'||bd=='m')
menu();  
}
int strindex(char s[],char t[],int l)
{int i,j,k;for(i=l;s[i]!='\0';i++)
{for(j=i,k=0;t[k]!='\0'&&s[j]==t[k];j++,k++)
;if(k>0&&t[k]=='\0')
return j-k;}return -1;
}
/*显示模块*/
void dayin(char text[],int k)
{
char pd;
pd=getchar();printf("%s\n",text);  if (k)
{system("PAUSE");}  if (pd=='M'||pd=='m')
menu();  }  
/*输入模块*/
void shuru(char text[])
{system("cls");printf("输入@结束输入并返回主菜单\n请输入内容\n");printf("%s",text);char c;int i=ntext;fflush(stdin);   while ((c=getchar())!='@'){
/*if (c==1)
{
break;
}
else
*/{
text[i]=c;
i++;
ntext=i;
continue;
}}if (c=='$')
bc(text);if(c=='@')
menu();}/*删除*/  
void shanchu(char p[],int l,char pd)
{pd=getchar();system("cls");int i,t,a=-1;char pattern[20],px;if (pd=='R'||pd=='r'){printf("输入A: 继续执行查找删除内容 任意键:返回主菜单");   }else {printf("输入A:确定要执行删除 任意键:返回主菜单");}fflush(stdin);px=getchar();if (px=='a'||px=='A'){printf("请输入您要删除的内容");scanf("%s",pattern);dayin(p,0);printf("您要删除的内容是:%s\n",pattern);t=strlen(pattern);a=strindex(p,pattern,l);int hs=1;for (i=0;i<=a;i++){if (p[i]=='\n'){hs++;   }}if (a==-1){printf("查找结束 您要删除的内容不存在\n输入R:重新输入要删除的内容");l=0;fflush(stdin);pd=getchar();  }else {printf("你要删除的内容在第%d行\n 输入A.确定删除 输入R:寻找下个词",hs);fflush(stdin);pd=getchar();l=a+t;}if (pd=='a'||pd=='A'){for(i=a;i<ntext;i++){
if(p[a-1]==' ')  
{
p[i]=p[i+t+1];}
else if((p[a+t]>=0&&p[a+t]<=64)||(p[a+t]>=91&&p[a+t]<=96)||p[a+t]>122||(p[a-1]>=0&&p[a-1]<=64)||(p[a-1]>=91&&p[a-1]<=96)||p[a-1]>122)
{  
p[i]=p[i+t];}
else
{p[i]=p[i+t];}}}else if (pd=='R'||pd=='r'){shanchu(p,l,pd);}if (pd=='a'||pd=='A'){ntext=ntext-t-1;printf("删除结果\n");  
dayin(p,1);}free(pattern);}
if (pd=='M'||pd=='m')
menu();  
}
/*插入*/
void charu(char p[],int l)
{int i,t,t2,a=-1;char pattern[20],pd,x[500];printf("输入您要在哪个内容前插入:");scanf("%s",pattern);
pd=getchar();t=strlen(pattern);a=strindex(p,pattern,l);int hs=1;for (i=0;i<=a;i++){if (p[i]=='\n'){hs++;   }printf("您要插入的位置是第%d行,%s之前,A:不是此位置B:在次位置插入",hs,pattern);fflush(stdin);pd=getchar();if (pd=='a'||pd=='A'){l=a+t;charu(p,l);}else if (pd=='b'||pd=='B')
{   printf("输入您要插入的内容");scanf("%s",x);t2=strlen(x);
for(i=ntext;i>=a;i--)
p[i+t+1]=p[i];
for(i=0;i<t2;i++){
p[i+a-1]=x[i];}
p[i+a-1]=' ';  
ntext=ntext+t2;printf("\n");}
}
if (pd=='M'||pd=='m')
menu();  
}

 

 

 

 

 

 

运行的结果如下:

至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

如有侵权,请联系小编,小编对此深感抱歉,届时小编会删除文章,立即停止侵权行为,请您多多包涵。

既然都看到这里,领两个红包在走吧!
以下两个红包每天都可以领取

1.支付宝搜索 522398497,或扫码支付宝红包海报。

支付宝扫一扫,每天领取大红包

2.微信红包,微信扫一扫即可领取红包

 

微信扫一扫,每天领取微信红包

小礼物走一走,来简书关注我


http://chatgpt.dhexx.cn/article/Bad8RMWG.shtml

相关文章

使用vue的富文本编辑器操作

使用vue的富文本编辑器操作 vue的富文本编辑器使用以及多图片文件上传与回显 一. vue-quill-edit 1. 安装vue的富文本 cd 当前的vue项目路径 npm install quill --save npm install vue-quill-editor --save2. 在页面中引入vue的富文本 //引入Vue的ueditor的资源 import {q…

Ckeditor富文本编辑器

开发工具与关键技术&#xff1a; MVC 撰写时间&#xff1a;2021/9/28 下面我们讲Ckeditor富文本编辑器的使用&#xff1b; 要使用Ckeditor富文本编辑器&#xff0c;需要在Ckeditor官网中下载js插件&#xff0c;下载后会得到一个ckeditor文件&#xff1a; 其中包含以下文件&am…

[web]前端富文本编辑器

关于富文本编辑器 在HTML中&#xff0c;用于输入文本的只是<input type"text"/>和<textarea>这2种标签&#xff0c;这些标签都只能输入纯文本&#xff0c;不可以对输入的内容进行编排&#xff01; 在实际应用时&#xff0c;例如发布文章&#xff0c;需要…

深入浅出富文本编辑器

‍ ‍大厂技术 坚持周更 精选好文 编辑器介绍 常见的富文本编辑器现实方式可以分成两大类&#xff0c;分别是用 textarea 和 contenteditable 来实现。 textarea 结构简单使用方便&#xff0c;一些文本格式和复杂的样式难以实现&#xff0c;推荐仅在对编辑要求不高的场景使用…

推荐几个非常不错的富文本编辑器

1、wangEditor——基于javascript和css开发的 Web富文本编辑器&#xff0c; 轻量、简洁、界面美观、易用、开源免费。 界面截图&#xff1a;官网地址 2、TinyMCE——TinyMCE是一个轻量级的基于浏览器的所见即所得编辑器&#xff0c;由JavaScript写成。它对IE6和Firefox1.5都有…

vue使用富文本编辑器vue-quill-editor

问题描述&#xff1a; 我们在开发过程中经常会遇到使用富文本编辑器进行操作&#xff0c;当前插件市场上关于富文本的编辑器挺多的&#xff0c;我们就不一一个介绍了&#xff0c;现在我们主要讲解一些vue-quill-editor富文本编辑器的使用操作和注意事项。 效果图 具体操作使用…

LayUI - 富文本编辑器

一个做后端的猿&#xff0c;难免用到LayUI&#xff0c;首先在这里&#xff0c;不推荐使用&#xff0c;坑多 我这里用的是layui-v2.5.7版本 一、富文本编辑器 缺点&#xff1a;功能太少&#xff0c;只能满足简单需求&#xff0c;只有下面这几个功能 废话少说&#xff0c;直接丢…

最佳文本编辑器

原文&#xff1a; donationcoder.com  译者&#xff1a; xbeta善用佳软  说明&#xff1a;仅做翻译&#xff0c;忠实原文。不代表同意文中观点&#xff08;xbeta认为最好的编辑器为VIM&#xff09;。 最佳文本编辑器 当前&#xff0c;好用的文本编辑器比比皆是——无论商…

Qt实现文本编辑器(一)

在Qt中QMainWindow是一个为用户提供主窗口程序的类&#xff0c;包含了&#xff1a;菜单栏、工具栏、锚接部件、状态栏以及一个中部件。今天我就来通过实现一个简单的文本编辑器讲解下对QMainWindow的各种功能讲解。 想要完整的实现一个编辑器&#xff0c;所需要的功能还是比较…

文本编辑器推荐

对于程序员或者开发者来说&#xff0c;可以通过电脑文本编辑器来完成语言的编译或输入&#xff0c;那么文本编辑器哪个好呢&#xff0c;其实使用系统自带的文本框就不错&#xff0c;当然还有不少其他软件可用。 文本编辑器哪个好&#xff1a; 一、记事本 1、这是系统自带的文…

富文本编辑器汇总

富文本编辑器&#xff1a;&#xff08;Rich Text Editor&#xff0c;RTE&#xff09;是一种可内嵌于浏览器&#xff0c;所见即所得的文本编辑器。它提供类似于Office Word 的编辑功能&#xff0c;方便那些不太懂HTML用户使用&#xff0c;富文本编辑器的应用非常广泛&#xff0c…

十五种文本编辑器

很多时候比如编程查看代码或者打开各种文档下我们都会用到文本编辑器&#xff0c;Windows自带的记事本功能很简陋并且打开大文件很慢&#xff0c;因此很多童鞋都会有自己喜欢的一款文本编辑器。在这里&#xff0c;西西挑选前15个最佳的文本编辑器&#xff0c;这些编辑器实际上主…

强烈呼吁弃用Notepad++,优秀替代品献上

Notepad作为一款开源文本编辑软件&#xff0c;无可厚非是一款优秀的软件, 但是由于“种种原因”, 坚决弃用。 禁用NotePad 推荐三款优秀的免费替代品&#xff1a; 可以直接去官网下载&#xff0c;也可以在下面的网盘地址下载&#xff08;分别提供了安装版&#xff08;分32位和…

adreno性能天梯图_深度学习之GPU显卡性能天梯图

在深度学习的显卡市场&#xff0c;英伟达的地位还是暂时无人能够撼动的。专业卡暂不纳入考虑&#xff0c;毕竟性价比太低了。大家平时使用的还是老黄的游戏卡&#xff0c;性能排第一的就是Titan RTX了&#xff0c;具备24G大显存&#xff0c;然而售价也高达两万块。接下来就是大…

2013台式计算机,显卡天梯图 2013最新台式机显卡天梯图

在聊完笔记本显卡的性能后,小编当然要和大家聊聊重头戏了:台式机的显卡天梯图。台式电脑一直是玩大型3D游戏的必选机型,虽然没有笔记本的便携性,但是台式机可以让电脑显卡性能得到充分的发挥,主要是独立显卡的散热不像笔记本那样存在空间狭小的问题。 台式机显卡性能一直…

mx350显卡天梯图_显卡天梯图2020年终整理发布

购买显卡如何选择&#xff1f;当然是有参考才能更好的选择&#xff0c;可是我们要拿什么参考呢&#xff1f;没错&#xff0c;通过笔者一年的时间收集整理&#xff0c;我们将为大家带来本年度英伟达显卡和AMD显卡天梯图。 AMD显卡天梯图&#xff1a; 英伟达显卡天梯图&#xff1…

2020电脑服务器cpu性能天梯图,CPU性能天梯图[202002版]

CPU与显卡还不太一样&#xff0c;CPU有线程&#xff0c;线程多&#xff0c;那性能会强。以前我们对CPU的认识有一个误区&#xff0c;老以为i5就比i3强&#xff0c;或者i7就比i5强&#xff0c;其实不一定。您以后就别再听电脑城那些人乱说&#xff0c;“我给你配置的是i7 的CPU&…

服务器单核性能天梯图,台式机cpu性能排行(cpu单核性能天梯图)

【科技犬】 鲁大师发布 2021 年 Q1 季度电脑处理器性能排行榜&#xff0c;霸榜两年的 AMD Ryzen Threadripper 3990X 依然是第一名。最新发布的 Threadripper PRO 3995WX 数据太少达不到上榜要求。 如上图所示&#xff0c;鲁大师台式机处理器排行榜前四名都是 AMD 处理器&#…

mx350显卡天梯图_五月显卡性能排行 台式显卡天梯图2020年5月最新版

显卡天梯图(更新至2020年5月9日)主要用来纵向对比一下显卡性能的高低&#xff0c;这样对于我们在DIY装机过程当中&#xff0c;选购桌面显卡有个参考标准。台式桌面级显卡天梯图方便我们更直观地对比不同厂商最新显卡之间的性能高低。以下IT数码通为大家带来2020年5月最新显卡天…

显卡天梯图:2014最新显卡性能天梯图

随着电脑游戏的推广&#xff0c;很多用户都喜欢上了电脑网络游戏&#xff0c;所以组装电脑用户在装机的时候&#xff0c;会考虑电脑配置的游戏性能&#xff0c;要提高电脑配置游戏性能首要条件就是显卡性能要强&#xff0c;如果显卡性能不佳&#xff0c;那么其它方面性能再强&a…