实现一个最简单的VIM文本编辑器(可能有bug,随便写了一个)
2023-09-27 14:28:47 时间
简单的写了一个文本编辑器,功能很简单,但足以把文件IO相关的操作熟悉了,可能功能或者分配的大小还不够完善。请参考参考:
#include stdio.h #include conio.h #include stdlib.h #include string.h #include windows.h #include fcntl.h int count ; char ch = 0; char file_name[20]={0}; char buffer[1024*1024]={0}; //退出文本编辑器 int exit_editor() printf("exit editor!\n"); memset(buffer, 0,1024*1024); system("cls"); return -1 ; //文本编辑模式 int text_editor_mode() int flag ; char input_ch = 0 ; flag = 0 ; count = 0 ; system("cls"); //进入编辑文本模式 printf("\a"); //清空数组 while(1) input_ch = getch(); //ESC按键 if(input_ch == 0x1B) printf("exit editor\n"); system("cls"); flag = 1 ; return flag ; //ENTER按键---- 实现文本编辑器换行 if(input_ch == 0x0d) putchar(\n); //输入的内容不是ESC按键的情况下就将文本信息保存到数组里去 if(input_ch != 0x1B) buffer[count] = input_ch ; putchar(input_ch); count++; //文本保存模式 int save_text_mode() int flag ; flag = 0 ; system("cls"); printf("plase input file name\n"); scanf("%s",file_name); int openfd = open(file_name,O_CREAT | O_TRUNC | O_RDWR); if(-1 == openfd){ printf("open file fair!\n"); memset(buffer, 0,1024*1024); memset(file_name,0,20); return -1 ; write(openfd,buffer,count); printf("save file success\n"); memset(buffer, 0,1024*1024); memset(file_name,0,20); close(openfd); printf("file save success!file_name:%s\n",file_name); system("cls"); flag = 1 ; return flag ; //读取一个文件的信息 int read_file() char *file = NULL; char *file_buffer = NULL ; system("cls"); int fle_flag = 0 ; int count_fd ; file = malloc(20); file_buffer = malloc(1024); printf("please input file name!\n"); scanf("%s",file); system("cls"); printf("please input file size!\n"); scanf("%d", count_fd); int fd = open(file,O_RDONLY); if(-1 == fd) fprintf(stderr,"open file error"); system("cls"); int i ; read(fd,file_buffer,count_fd); for(i = 0 ; i count_fd ; i++) printf("%c",file_buffer[i]); while(1) char rch = getch(); if(rch == 0x1B){ system("cls"); break ; free(file); free(file_buffer); close(fd); fle_flag = 1 ; return fle_flag ; int main(void) int file_fd = -1; int ret = 0; int exit_ret = 0; int save_ret = 0; int read_ret = 0 ; //重新开始 Rep: printf("Welcome to yyx develop VIM-EDITUO\n"); printf("please input i to editor ,r to read , w to save , q to quit\n"); while(1) ch = getch(); switch(ch) case w: save_ret = save_text_mode(); break ; case i: ret = text_editor_mode(); break ; case q: exit_ret = exit_editor(); break ; case r: read_ret = read_file(); break ; if(ret == 1 || save_ret == 1 || read_ret == 1) goto Rep ; if(exit_ret == -1) break ; return 0 ;
centos 网站漏洞修复之vim文本编辑BUG分析与修复方案 linux系统一直以来都是比较安全的,不管是系统内核还是一些第三方软件都没有太大的漏洞,包括前几年爆出的redis漏洞,没有太多漏洞,然后最近linux频频爆出高危的漏洞,使用vim文本编辑器很多年了,得知被爆出远程代码执行漏洞,有点不可思议,全国大多数的linux服务器都使用的是vim,包括centos系统,redhat,关于该漏洞的详情以及修复方案,我们SINE安全来详细的跟大家介绍一下:
关于vim的使用,通过博客,无论是静态的截图或者是代码/文本复制,很难展示所要表现的内容。更多需要读者亲自敲键盘实践之后才知道其作用。 本文不会也无法描述vim过多的细节,仅仅是对于常用的命令做一下记录,因为vim的帮助文档很庞当。
morixinguan ITGEGE在线教育嵌入式开发讲师。 CSDN博客专家、CSDN-Linux特邀编辑、CSDN博乐、CSDN学院讲师,目前从事嵌入式开发领域,从事与单片机,Linux,android相关的产品开发。
相关文章
- 一个神奇的bug:OOM?优雅终止线程?系统内存占用较高?
- 【机器人规划】Bug解析
- 十年开发技术 Bug 总结,程序员经验分享
- BUG_vector iterator not dereferencable
- 写了个全局变量的bug,被同事们打脸!!!
- 极客日报第111期:36 岁程序员应聘被公司领导直接拒绝;字节跳动:公司暂不具备上市条件;财务软件 bug 致数百人被错误定罪
- bug统计分析续(一)基于SQL的Bug统计方法
- 关于AFNetworking 安全bug的回复
- cocos2d-js 3.0 rc2 自定义UI控件组件 例子:能播放动画的MenuItem。MenuItemSprite的bug
- 对待棘手bug,新手与大牛的差距在哪里?
- 解决一个偶现的503 bug,花了俺不少时间
- dbcp 1.4 底层连接断开时内存泄露bug
- Cocos 更新时反复杀进程,导致差异更新失效的Bug
- 总结:开发容易出Bug的代码或操作