c语言文本编辑器系统源码.zip
资源内容介绍
c语言文本编辑器系统源码.zip #include <stdio.h>#include <conio.h>#include <bios.h>#include <math.h>#define LEFT 0x4b00 #define RIGHT 0x4d00 #define DOWN 0x5000 #define UP 0x4800 #define ESC 0x011b #define ENTER 0x1c0d #define DEL 21248 #define BACK 3592 #define CL 29440 #define CR 29696 #define Cc 11779 #define Cv 12054 #define Cx 11544 #define F1 15104 #define F2 15360 #define F3 15616 #define F10 17408 int value,backup,NUM;typedef struct record { char ch; int col, line; }record;record r[500]; typedef struct node { char ch; struct node *next; }node; typedef struct Hnode { node *next; struct Hnode *nextl; }Hnode;void drawmain() { int i,j; gotoxy(1,1); textbackground(7); textcolor(0); insline(); for(i=1;i<=24;i++) { gotoxy(1,1+i); cprintf("%c",196); gotoxy(80,1+i); cprintf("%c",196); } for(i=1;i<=79;i++) { gotoxy(1+i,2); cprintf("%c",196); gotoxy(1+i,25); cprintf("%c",196); } gotoxy(1,1); cprintf("%c",196); gotoxy(1,24); cprintf("%c",196); gotoxy(80,1); cprintf("%c",196); gotoxy(80,24); cprintf("%c",196); gotoxy(7,1); cprintf("%c %c File %c %c",179,17,16,179); gotoxy(27,1); cprintf("%c %c Edit %c %c",179,17,16,179); gotoxy(47,1); cprintf("%c %c Help %c %c",179,17,16,179); gotoxy(5,25); textcolor(1); cprintf(" Row:1 Col:1"); gotoxy(68,25); cprintf("Version 2.0"); }void qview(Hnode *q) /*快速预览文本:开头:#,回车:* */ { void view(Hnode *q); node *p; int i; window(1,1,80,25); clrscr(); do{ p=q->next; cprintf("#"); while(p!=NULL) { if(p->ch==13) putch('*'); /*若为回车键,打印出*号*/ else putch(p->ch); p=p->next; } q=q->nextl; printf("\n"); }while(q!=NULL); getch(); clrscr(); drawmain(); window(2,2,79,23); textbackground(9); for(i=0;i<24;i++) insline(); window(3,3,78,23); textcolor(10); }void view(Hnode *q) { node *p; clrscr(); do{ p=q->next; while(p!=NULL&&p->ch>=32&&p->ch<127&&p->ch!=13&&p->ch!=-1) { putch(p->ch); p=p->next; } q=q->nextl; if((p->ch==13||p->ch==-1)&&q!=NULL) gotoxy(1,wherey()+1); }while(q!=NULL); } int check(Hnode *Hhead,int m,int n) { int i; Hnode *q; node *p; q=Hhead; for(i=1;i<m;i++) q=q->nextl; p=q->next; for(i=1;i<n;i++) p=p->next; if(p->ch==13) return -1; if(p->ch>=32&&p->ch<127) return p->ch; else return 0; }int judge(Hnode *Hhead,int m) { Hnode *q; node *p; int i,num=0; q=Hhead; for(i=1;i<m;i++) q=q->nextl; if(q==NULL) return -1; p=q->next; while(p->next!=NULL) { p=p->next; num++; } if(p->ch==13&&num==0) return 0; if(p->ch>=32&&p->ch<127) return num+1; if(p->ch==13&&num!=0) return num; else return 1; } int del(Hnode *Hhead,int m,int n) { Hnode *q,*q1; node *p1,*p2,*tail; int i,num=0,j,flag=0; q=Hhead; if(n==0&&m==1) return; if(n==0&&m>1) { n=76; m=m-1; gotoxy(n,m); flag=1; } for(i=1;i<m;i++) q=q->nextl; p1=q->next; for(i=1;i<n-1;i++) p1=p1->next; p2=p1->next; if(n==1) { q->next=p1->next; free(p1); } else { p1->next=p2->next; free(p2); }