📄 edit11.c
字号:
#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 HOME 0x4700
#define END 0x4f00
#define SPACE 0x3920
#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",179);
gotoxy(80,1+i);
cprintf("%c",179);
}
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",218);
gotoxy(1,24); cprintf("%c",192);
gotoxy(80,1); cprintf("%c",191);
gotoxy(80,24); cprintf("%c",217);
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("Line:1 Col:1");
gotoxy(68,25);
cprintf("Version 1.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!=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+1);
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);
}
while((num=judge(Hhead,m++))>0)
{
p1=q->next; q1=q;
if(p1!=NULL)
{
while(p1->next!=NULL)
p1=p1->next;
tail=p1;
q=q->nextl; p1=p2=q->next;
tail->next=p1;
}
else
{
q=q->nextl; p1=p2=q->next;
q1->next=p1;
}
for(i=0;i<76-num;i++)
{
p1=p2;
p2=p2->next;
if(p2->ch==13) break;
}
q->next=p2;
p1->next=NULL;
}
return flag;
}
int test(Hnode *Hhead,int n)
{
int i=0,num1=1;
node *p1,*p2,*tail,*temp1,*temp2;
Hnode *q;
q=Hhead;
for(i=1;i<n;i++)
q=q->nextl;
tail=p1=q->next;
if(p1==NULL) return;
while(tail->next!=NULL)
tail=tail->next;
for(i=0;i<75;i++)
{
if(p1->ch==13||p1->next==NULL) break;
p1=p1->next;
}
p2=p1->next;
p1->next=NULL;
if(tail->ch!=13)
{
if(p1->ch==13&&q->nextl==NULL)
{
q->nextl=(Hnode *)malloc(sizeof(Hnode));
q->nextl->nextl=NULL;
tail->next=(node *)malloc(sizeof(node));
tail->next->ch=13; tail->next->next=NULL;
q->nextl->next=p2;
}
else
{
q=q->nextl;
tail->next=q->next;
q->next=p2;
if(q!=NULL) test(Hhead,++n);
}
}
else
{
temp2=p2;
while(q!=NULL&&p2!=NULL)
{
if((q->nextl==NULL)&&(p1!=tail||p2!=NULL)&&(num1==1))
{
num1++;
q->nextl=(Hnode *)malloc(sizeof(Hnode));
q->nextl->nextl=NULL; q->nextl->next=NULL;
}
q=q->nextl;
temp1=q->next;
q->next=temp2;
temp2=temp1;
}
}
}
void insert(Hnode *Hhead,int m,int n, char a)
{
int i;
Hnode *q;
node *p,*p1,*p2;
q=Hhead;
for(i=1;i<m;i++)
q=q->nextl;
p1=q->next;
for(i=1;i<n-1;i++)
p1=p1->next;
p=(node *)malloc(sizeof(node));
p->ch=a;
if(n==1)
{
p->next=q->next;
q->next=p;
}
else
{
p->next=p1->next;
p1->next=p;
}
test(Hhead,m);
}
void control(int A, Hnode *Hhead)
{
void colorview(Hnode *,int,int);
int x,y,flag=0;
x=wherex(); y=wherey();
if((A==CL)&&(x!=1))
gotoxy(wherex()-1,wherey());
if((A==CL)&&(x==1))
gotoxy(abs(judge(Hhead,wherey()-1)),wherey()-1);
if((A==CR)&&check(Hhead,wherey(),wherex())>0)
{ flag=1; gotoxy(wherex()+1,wherey()); }
if((A==CR)&&check(Hhead,wherey()+1,1)>0&&check(Hhead,y,x)==0)
{ flag=1; gotoxy(1,wherey()+1); }
if((A==CR)&&x==76)
{ flag=1; gotoxy(1,wherey()+1); }
if(A==CR&&flag==1)
{
r[abs(value)].col=wherex();
r[abs(value)].line=wherey();
r[abs(value)].ch=check(Hhead,r[abs(value)].line,r[abs(value)].col);
if(r[abs(value)].ch==-1) r[abs(value)].ch=13;
value--;
}
if(A==CL&&(x!=1||y!=1))
{
r[abs(value)].col=wherex();
r[abs(value)].line=wherey();
r[abs(value)].ch=check(Hhead,r[abs(value)].line,r[abs(value)].col);
value++;
}
colorview(Hhead,wherex(),wherey());
}
void colorview(Hnode *Hhead,int x,int y)
{
int i;
view(Hhead);
for(i=0;i<abs(value);i++)
{
gotoxy(r[i].col,r[i].line);
textbackground(7);
textcolor(0);
if(r[i].ch!=13&&r[i].ch!=-1)
cprintf("%c",r[i].ch);
if(r[i].ch==13||r[i].ch==-1)
cprintf(" ");
}
gotoxy(x,y);
}
void drawmenu(int m,int n)
{
int i;
if(m%3==0)
{
window(8,2,19,9);
textcolor(0);
textbackground(7);
for(i=0;i<7;i++)
{
gotoxy(1,1+i);
insline();
}
window(1,1,80,25);
gotoxy(7,1);
for(i=1;i<=7;i++)
{
gotoxy(8,1+i);
cprintf("%c",179);
gotoxy(19,1+i);
cprintf("%c",179);
}
for(i=1;i<=11;i++)
{
gotoxy(8+i,2);
cprintf("%c",196);
gotoxy(8+i,9);
cprintf("%c",196);
}
textbackground(0);
gotoxy(10,10); cprintf(" ");
for(i=0;i<9;i++)
{
gotoxy(20,2+i);
cprintf(" ");
}
textbackground(7);
gotoxy(8,2); cprintf("%c",218);
gotoxy(8,9); cprintf("%c",192);
gotoxy(19,2); cprintf("%c",191);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -