c语言文本编辑器源代码 含窗口,文本编辑器-C语言实现1

想学好C语言,可那是不容易的事.没事在C语言之家下载了这个源文件.供自己学习用.也与大家一起分享吧!

/* A Screen Editer Subsystem */

#define TURBOC

#include

#include

#include

#include

#include

#define BUF_SIZE 32000

#define LINE_LEN 79-2

#define MAX_LINES 24-1

#define KILL_BUF_SIZE 4*LINE_LEN

/***********************************************************/

char buf[BUF_SIZE];

char *curloc,*endloc;

int scrnx,scrny;

char killbuf[KILL_BUF_SIZE];

char *helpline="F1:save F2:load F3:find F4:replace ^K:kill line ^Y:Yank ^Z:qiut";

/*************************************************************/

void edit(char *fname),help(void);

void gotoxy(int x,int y),clrline(int y);

void edit_clr_col(int x,int y),clrscr(void);

void printline(char *p),delete_char(void);

void search(void),kill_line(void);

void scrolldn(int x,int y);

void scrollup(int topx,int topy,int endx,int endy);

void upline(void);

void downline(void),left(void),right(void);

void display_scrn(int x,int y,char *p);

void pagedown(void),pageup(void),replace(void);

void home(void),gotoend(void),yank(void);

int load(char *fname),save(char *fname);

void edit_gets(char *str);

void draw_border(int,int,int,int,int);

/***************************************************/

main(int argc,char *argv[])

{

union REGS r;

char fname[80];

if(argc<2)

{

draw_border(0,0,78,24,0x1f);

draw_border(20,12,60,14,0x2f);

gotoxy(20,11);

printf("\7FILE NAME:");

gotoxy(21,13);

gets(fname);

edit(fname);

}

if(argc==2)

{

strupr(argv[1]);

if(strstr(argv[1],".EXE")||strstr(argv[1],".COM")||\

strstr(argv[1],".OBJ")||strstr(argv[1],".LIB"))

{

printf("\7Can't edit file :%s",argv[1]);

exit(1);

}

else edit(argv[1]);

}

r.h.ah=6;

r.h.al=0;

r.h.ch=0;

r.h.cl=0;

r.h.dh=24;

r.h.dl=79;

r.h.bh=7;

int86(0x10,&r,&r);

gotoxy(1,1);

}

/******************************************************************/

void edit(char *fname)

{

union k

{

char ch[2];

unsigned i;

}key;

char name[80];

/* try to load the file */

if(!load(fname))curloc=endloc=buf;

strcpy(name,fname);

/* set initial values to X,Y coordinate vars */

scrnx=scrny=0;

display_scrn(0,0,curloc);

help();

gotoxy(1,1);

/* editer main loop . */

do{

#ifdef TURBOC

key.i=bioskey(0);

#endif

if(!key.ch[0])

{

switch(key.ch[1])

{

case 59: /*F1 :save file */

save(name);

break;

case 60: /*F2: load file */

clrline(MAX_LINES);

gotoxy(1,MAX_LINES);

printf("Enter filename :");

edit_gets(name);

strupr(name);

if(strstr(name,".EXE")||strstr(name,".COM")||\

strstr(name,".OBJ")||strstr(name,".LIB"))

{

gotoxy(1,MAX_LINES);

printf("\7Can't edit file: %s",name);

getch();

help();

break;

}

if( * name) load(name);

help();

display_scrn(0,0,curloc);

scrnx=scrny=0;

break;

case 61:

search();

break;

case 62:

replace();

break;

case 71:

home();

break;

case 79:

gotoend();

break;

case 75: /*left*/

left();

break;

case 77:

right();

break;

case 72:

upline();

break;

case 80:

downline();

break;

case 73:

pageup();

break;

case 81:

pagedown();

break;

case 83: /*Del*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值