VC文本编辑器源程序
![star](https://csdnimg.cn/release/downloadcmsfe/public/img/star.98a08eaa.png)
根据提供的文件信息,我们可以分析出该文本编辑器是基于Visual C++(VC)开发的简单应用,主要功能包括创建、打开、保存文件以及对文件内容进行基本操作如追加、插入、删除等。下面将详细解析该编辑器涉及的关键知识点。 ### 1. 文件结构与类型定义 #### Hstring 结构体 在代码片段中定义了一个`Hstring`结构体,用于存储文本内容。结构体包含两个成员: - `char *ch`: 指向字符串的指针。 - `int length`: 字符串长度。 这样的设计可以方便地处理不同长度的字符串,并且通过长度字段减少每次访问字符串时重新计算长度的需求,提高了效率。 ### 2. 主函数逻辑 主函数中包含了整个文本编辑器的核心流程控制,包括初始化、菜单展示以及用户交互处理。 #### 初始化 - 分配内存空间给`txt`和`temp`两个`Hstring`结构体实例,用于分别存储当前编辑的文本内容和临时存储的文本内容。 - 初始化`filename`数组,用于存放待操作的文件名。 #### 用户交互 主函数中通过循环展示了多个菜单选项供用户选择: - **新建**:用户输入文件名,调用`build`函数创建新文件。 - **打开**:用户输入文件名,调用`open`函数打开现有文件。 - **退出**:结束程序运行。 打开或新建文件后,进入内部循环,提供更多的编辑选项: - **追加**:允许用户输入新的文本并追加到当前文本末尾。 - **插入**:允许用户指定位置插入文本。 - **删除**:删除指定范围内的文本。 - **查找**:搜索特定字符串的位置。 - **另存为**:将当前编辑的文本保存到新的文件中。 - **退出**:退出编辑状态返回主菜单。 ### 3. 功能实现 #### 追加 - 调用`writetotemp`函数让用户输入要追加的内容,并暂存到临时变量`temp`。 - 显示当前文本内容与临时变量内容,提示用户确认是否追加。 - 如果用户确认,则调用`write`函数将`temp`中的内容追加到`txt`。 #### 插入 - 提示用户输入要插入的位置和内容。 - 调用`insert`函数实现插入操作。 #### 删除 - 提示用户输入要删除的起始位置和长度。 - 调用`Delete`函数实现删除操作。 #### 查找 - 提示用户输入要查找的字符串。 - 调用`seek`函数查找字符串在文本中的位置。 #### 另存为 - 提示用户输入文件名。 - 调用`save`函数将当前文本内容保存到指定的新文件中。 ### 4. 关键函数解析 #### build - 参数:`Hstring &`, `char []` - 用途:创建新文件并返回是否成功。 #### open - 参数:`Hstring &`, `char []` - 用途:打开现有文件并返回是否成功。 #### writetotemp - 参数:`Hstring &` - 用途:允许用户输入文本并将其存储在`temp`变量中。 #### write - 参数:`Hstring &`, `int`, `Hstring` - 用途:将一个`Hstring`的内容写入另一个`Hstring`指定位置。 #### insert - 参数:`Hstring &`, `int`, `Hstring` - 用途:在指定位置插入文本。 #### seek - 参数:`Hstring`, `Hstring`, `int` - 用途:查找字符串在文本中的位置。 #### save - 参数:`Hstring`, `char []` - 用途:将文本内容保存到文件。 #### Delete - 参数:`Hstring &`, `int`, `int` - 用途:删除指定位置的文本。 这个文本编辑器虽然功能较为基础,但涵盖了文本编辑器的基本需求,适合初学者学习VC编程及文本处理的基本方法。
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![txt](https://img-home.csdnimg.cn/images/20241231045021.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![txt](https://img-home.csdnimg.cn/images/20241231045021.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
#include "conio.h"
#include "stdlib.h"
typedef struct
{
char * ch;
int length;
}Hstring;
void main()
{
int build(Hstring &,char []); /*建立新文本的函数*/
int open(Hstring &,char []); /*打开指定文本的函数*/
void writetotemp(Hstring &); /*向临时字符串写入内容的函数*/
void write(Hstring &,int,Hstring); /*插入函数*/
void insert(Hstring &,int,Hstring);
int seek(Hstring,Hstring,int); /*定位函数*/
int save(Hstring,char []);
void Delete(Hstring &,int,int);
char skip=0,skip1=0,skip2=0,skip3=0;
int pos=0,saved=0,prt=0;
printf("\n\n\n\n\n\t\t\t\t文本编辑器\n\n\n\n\n\t\t\t 程序编写:**\n\n\t\t\t 调试:***\n\n\n\t 请按任意键进入菜单");
getch();
Hstring txt,temp; /*操作中用到的主要字符串和临时字符串*/
txt.ch=(char *)malloc(sizeof(char));
temp.ch=(char *)malloc(sizeof(char));
txt.ch[0]=0;
txt.length=0;
temp.ch[0]=0;
temp.length=0;
char filename[20]={0}; /*操作的文件的名称*/
{
system("cls");
printf("\n\n请按键选择:\n1.新建文本\n2.打开文本\n3.退出\n");
switch(getch())
{
case '1': /*按“1”新建文本*/
printf("\n新建文件\n请输入文件名:\n");
scanf("%s",filename);
if(build(txt,filename))
skip=1;
break;
case '2': /*按“2”打开文本*/
printf("\n打开文件\n请输入文件名:\n");
scanf("%s",filename);
if(open(txt,filename))
skip=1;
break;
case '3': /*按“3”退出程序*/
system("cls");
printf("\n\n感谢使用,按任意键关闭窗口");
getch();
exit(0);
default: /*按其他键报错并返回*/
printf("\n\n按键错误,请重新选择\n");
}
}
for(skip=0;skip==0;)
{
system("cls");
剩余13页未读,继续阅读
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
- iSenses2012-04-21作为编辑器来说缺少鼠标响应,只有最基本的操作,函数包裹也没有,不过还是谢谢了!
- GTRGTS2013-12-15交作业用了,感谢
![avatar](https://profile-avatar.csdnimg.cn/0cc4aaca54944feaa260153e36faaaf3_rengwuxian.jpg!1)
- 粉丝: 4
- 资源: 6
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
- YOLOv11边缘计算部署指南-TensorRT加速与NVIDIAJetson优化实践.pdf
- YOLOv11边缘计算部署指南-无人机巡检实时目标检测优化策略.pdf
- YOLOv11+SlowFast-工业生产中的高危动作识别系统开发.pdf
- YOLOv11船舶检测实战-MMShip数据集1.9%mAP提升秘籍.pdf
- YOLOv11边缘计算实战-无人机巡检中的输电线路缺陷实时检测.pdf
- YOLOv11多传感器融合-自动驾驶场景下的行人检测与轨迹预测.pdf
- YOLOv11多任务学习-病理切片细胞分类与病灶区域分割联合训练.pdf
- YOLOv11多任务优化-同时实现零售货架商品检测与OCR识别.pdf
- YOLOv11多任务实战-目标检测+距离测量+三维姿态估计一体化方案.pdf
- YOLOv11工业级缺陷检测实战-基于PCB板瑕疵识别的轻量化模型优化.pdf
- YOLOv11工业质检-高精度缺陷检测与实时分类解决方案.pdf
- YOLOv11工业缺陷检测实战-从模型训练到生产线部署全流程.pdf
- YOLOv11工业质检-零缺陷检测系统搭建与模型部署全攻略.pdf
- YOLOv11工业质检实战-基于表面缺陷检测的模型优化与部署指南.pdf
- YOLOv11跨平台部署实战-从TensorRT到ONNX的工业级优化.pdf
- YOLOv11模型轻量化-从TensorRT部署到边缘计算性能调优全攻略.pdf
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)