亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? editzqw.c

?? C語言不知道你學得怎么樣呀
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* Witten by Herb Schildt. type by zhang qiwen. */

/* A Screen Editor Subsystem. */

#define TURBOC
#include "stdio.h"
#include "dos.h"
#include "string.h"
#include "bios.h"
#include "conio.h"
#define BUF_SIZE 32000
#define LINE_LEN 79
#define MAX_LINES 24
#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:quit";
void edit(char *fname), help(void);
void gotoxy(int x,int y),clrline(int y);
void edit_clr_eol(int x,int y),clrscr(void);
void printline(char *p),delete_char(void);
void search(void),kill_line(void);
void upline(void);
void downline(void),left(void),right(void);
void scrolldn(int x,int y);
void scrollup(int topx,int topy,int endx,int endy);
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);

main(int argc,char *argv[])
{
    if(argc==2) edit(argv[1]);
    clrscr();
}

/* This is the editor's entry function and contains
   its main loop.

   Call it with the name of the file you want to edit.
*/
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);

    clrscr();

    /* set initial values to X,Y coordinate vars */
    scrnx=scrny=0;

    /* display a screen full of text */
    display_scrn(0,0,curloc);
    help();    /* print the help line */
    gotoxy(0,0);

    /* editor main loop */
    do {
      #ifdef TURBOC
        key.i=bioskey(0);   /* read 16-bit key code */
      #endif
      #ifdef MICROSOFTC
        key.i=_bios_keybrd(0);
      #endif
        if (!key.ch[0]) {   /* is a command */
            switch(key.ch[1]) {
	    case 59:          /* F1: save file */
		save(name);break;
	    case 60:          /* F2: load file */
		clrline(MAX_LINES);
		gotoxy(0,MAX_LINES);
		printf("enter filename:");
		edit_gets(name);
		if(*name) load(name);
		help();
		display_scrn(0,0,curloc);
		scrnx=scrny=0;
		break;
	    case 61:          /* F3: search */
		search();
		break;
	    case 62:          /* F4: replace */
		replace();
	        break;
	    case 71:          /* home */
		home();
	        break;
	    case 79:          /* end */
		gotoend();
	        break;
	    case 75:          /* left */
		left();
		break;
	    case 77:          /* right */
		right();
		break;
	    case 72:          /* up */
		upline();
	        break;
	    case 80:          /* down */ 
		downline();
	        break;
	    case 73:          /* page up */
		pageup();
	        break;
	    case 81:          /* page down */
		pagedown();
		break;
	    case 83:          /* Del */
		if(curloc<endloc) delete_char();
	        break;
	    }
	    if (curloc<buf) {
		scrnx=scrny=0;
		curloc=buf;
	    }
	    gotoxy(scrnx,scrny);   /* position cursor */
          }
	  else {    /* enter keystroke into file */
	      switch(key.ch[0]) {
		  case '\r':   /* carriage return */
		      /* see if buffer is full */
		      if(endloc==buf+BUF_SIZE-2) break;

		      /* move contents of file below current 
			 location down one byte to make room
		         for the RETURN
		      */
		      memmove(curloc+1,curloc,endloc-curloc+1);

		      *curloc=key.ch[0];  /* put RETURN in file */
		      curloc++;

                      /* clear rest of line */
       		      edit_clr_eol(scrnx,scrny);
		      scrnx=0;
		      scrny++;

                      /* move text on screen down */
		      if(scrny==MAX_LINES) {  /* at bottom of page */
		          scrny=MAX_LINES-1;
		          scrollup(0,0,LINE_LEN,scrny);
		      }
		      else scrolldn(scrnx,scrny);

		      gotoxy(scrnx,scrny);
		      printline(curloc);   /* display the line */
		      endloc++;   /* advance the end of file pointer */
		      break;
		  case '\b':    /* backspace */
		      if (curloc==buf) break;
		      left();
		      delete_char();
		      break;
		  case 11:     /* control-K: kill line */
		      kill_line();
		      break;
		  case 25:     /* control-Y: yank kill buffer */
		      yank();
		      break;
		  default:
		      /* see if buffer is full */
		      if(endloc==buf+BUF_SIZE-2) break;

			/* can't type past end of line */
		      if(scrnx==LINE_LEN) break;

			/* move contents of file below current
			   location down one byte to make room
			   for the character
			*/
		      memmove(curloc+1,curloc,endloc-curloc+1);
		      *curloc=key.ch[0];  /* put keystroke in file */
		      putch(*curloc);     /* display key on the screen */
		      scrnx++;    /* advance X */
		      gotoxy(scrnx,scrny);
		      printline(curloc+1);  /* display the line */
		      curloc++;   /* advance the current location */
		      endloc++;   /* advance the end of file pointer */
	      }
	      gotoxy(scrnx,scrny);
	  }
    }while(key.ch[0]!=26);  /* control-Z quits the editor */
}

/* Display a line pointed to by p. This function 
   stops when it hits a carriage return or the 
   end of the file.
*/
void printline(register char *p)
{
    register int i;
    i=scrnx;
    while(*p!='\r' && *p && i<LINE_LEN) {
	putch(*p);
	p++;
	i++;
    }
}

/* Insery previously killed line. */
void yank(void)
{
    char *p;
    p=killbuf;
    while(*p) {
	memmove(curloc+1,curloc,endloc-curloc+1);
	*curloc=*p;   /* put keystroke in file */
	if(scrnx<LINE_LEN) {
	    putch(*curloc);   /* display the dey on the screen */
	    scrnx++;
	}
	curloc++;
	endloc++;
	p++;
    }
    printline(curloc);
}

/* Delete the line at the current location. */
void kill_line(void)
{
    int i;
    char *p,*killbufptr;

    if(*curloc=='\r') {
	delete_char();
	return;
    }

    edit_clr_eol(scrnx,scrny);   /* clear to CR */

	/* find out how many characters are in the line */
    p=curloc;
    i=0;
    killbufptr=killbuf;
    while(*p!='\r' && p<endloc) {
	i++;
	*killbufptr=*p;   /* put in kill buffer */
	p++;
	if(killbufptr<killbuf+KILL_BUF_SIZE-2) killbufptr++;
    }
    *killbufptr='\0';

    /* remove the line */
    memmove(curloc,curloc+i,endloc-curloc);
    endloc-=i;
}

/* Global search and replace .*/
void replace(void)
{
    register int len1;
    char str1[80],str2[80];
    char *p,*p2;
    clrline(MAX_LINES);
    gotoxy(0,MAX_LINES);
    printf("enter string to replace:");
    edit_gets(str1);
    clrline(MAX_LINES);
    gotoxy(0,MAX_LINES);
    printf("enter replacement:");
    edit_gets(str2);

    p=curloc;
    len1=strlen(str1);

    while(*str1) {
		/* search for the string */
	    while(*p && strncmp(str1,p,len1)) p++;
	    if (!*p) break;   /* not found */
        
		/* remove old string */
	    memmove(p,p+len1,endloc-p);
	    endloc-=len1;
        
		/* insert new string */
	    p2=str2;
	    while(*p2) {
	        memmove(p+1,p,endloc-p+1);
	        *p=*p2;
	        p++;
	        endloc++;
	        p2++;
	    }
    }
    clrscr();
    
	/* find location of top of screen */
    p=curloc;
    for(len1=scrny;len1>=0 && p>buf;) {
	p--;
	if(*p=='\r') len1--;
    }
    if(*p=='\r') p++;

    /* redisplay current screen */
    display_scrn(0,0,p);
    help();
}

/* Delete character at the current locatin. */
void delete_char(void)
{
    gotoxy(scrnx,scrny);

    if(*curloc=='\r') {   /* RETURN, scroll display */
	    scrollup(0,scrny+1,LINE_LEN,MAX_LINES-1);
	    memmove(curloc,curloc+1,endloc-curloc);
	    endloc--;
	    display_scrn(scrnx,scrny,curloc);
	    help();
    }
    else {
	    memmove(curloc,curloc+1,endloc-curloc);
	    endloc--;
	    printline(curloc);printf(" ");
    }
}

/* Display help line. You might want to expand on 
   this idea.
*/
void help(void)
{
    gotoxy(0,MAX_LINES);
    printf(helpline);
}

/* Move current location left. */
void left(void)
{
    if(curloc==buf) return;  /* can't go left */
    scrnx--;
    if(scrnx<0) {   /* at beginning of a line */
	    scrnx=0;
	    upline();       /* go up to next line */
	    /* find end of line */
	    while(*curloc!='\r') {  
	        curloc++;
	        scrnx++;
	    }
    }
    else curloc--;
}

/* Move current position right. */
void right(void)
{
    /* can't move right */
	if(curloc+1>endloc) return;

    scrnx++;
    
	/* if at end of line, go to next one */
    if(scrnx>LINE_LEN || *curloc=='\r') {
	    scrnx=0;
	    scrny++;
	    if(scrny==MAX_LINES) {   /* at end of screen */
	        scrny=MAX_LINES-1;
	        downline();   /* get next line */
            
		/* move cursor and current loc to start of 
		new line */
	    curloc--;
	    while(*curloc!='\r') curloc--;
	    curloc++;
	    scrnx=0;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99re66热这里只有精品3直播| 国产美女久久久久| 日韩欧美精品三级| 91国产成人在线| 成人av免费在线观看| 丰满白嫩尤物一区二区| 国内偷窥港台综合视频在线播放| 青青青伊人色综合久久| 日本欧美在线观看| 青青草原综合久久大伊人精品 | 琪琪一区二区三区| 91影视在线播放| av高清久久久| 91九色02白丝porn| 国产日产欧产精品推荐色| 国产无遮挡一区二区三区毛片日本| 久久麻豆一区二区| 综合色中文字幕| 亚洲电影视频在线| 日一区二区三区| 国产一区二区三区日韩| 91精品国产综合久久久蜜臀粉嫩| 91精品国产综合久久久久久 | 亚洲电影欧美电影有声小说| 不卡的电影网站| 国产三级久久久| 水蜜桃久久夜色精品一区的特点| 欧美视频精品在线观看| 精品免费视频一区二区| 亚欧色一区w666天堂| 精品一区二区三区免费观看| 日韩欧美一二三四区| 午夜精品福利久久久| 久久超碰97中文字幕| 国产999精品久久| 久久综合av免费| 一区二区三区精品视频在线| 日本中文字幕一区二区有限公司| 欧美日韩在线播放三区| 久久久不卡网国产精品二区| 国内外精品视频| 国产无一区二区| 成人国产精品免费观看动漫| 中文字幕在线一区二区三区| 午夜精品福利视频网站| 亚洲第一精品在线| 欧美一级视频精品观看| 91国产成人在线| 亚洲一本大道在线| 福利视频网站一区二区三区| 樱桃视频在线观看一区| 日韩精品电影一区亚洲| 日韩视频在线永久播放| 亚洲欧美国产高清| 国产精品一区三区| 3d成人动漫网站| 看片的网站亚洲| 欧美激情在线观看视频免费| 免费成人深夜小野草| 国产亚洲短视频| av电影一区二区| 亚洲成人av一区二区| 精品成人一区二区| 日本中文字幕不卡| 国产精品美女久久久久久| 国产曰批免费观看久久久| 国产精品乱码一区二区三区软件 | 亚洲国产wwwccc36天堂| 亚洲免费伊人电影| 亚洲欧美日韩小说| 91精品1区2区| 美女性感视频久久| 粉嫩绯色av一区二区在线观看 | 久久伊人中文字幕| 99免费精品视频| 婷婷久久综合九色综合伊人色| 日韩精品影音先锋| 91视频在线看| 久久精品国产免费看久久精品| 国产日韩欧美麻豆| 欧美视频一区在线观看| 国产精品一区二区果冻传媒| 一区二区三区在线观看视频| 日韩一区二区精品葵司在线| 久久不见久久见免费视频7| 亚洲男同性视频| 欧美日韩另类一区| 国产乱一区二区| 青青草成人在线观看| 日本道精品一区二区三区| 久久精品久久99精品久久| 亚洲色欲色欲www| 久久九九99视频| 91 com成人网| 91啪在线观看| 国产精品一区二区三区乱码| 亚洲高清不卡在线观看| 国产精品乱人伦中文| 精品国产sm最大网站免费看| 欧美视频一区二区三区四区| 99视频一区二区| 国产成人激情av| 国产精品你懂的在线欣赏| 欧美电影免费观看高清完整版在线 | 日本欧美韩国一区三区| 日韩一级二级三级| 色婷婷久久久亚洲一区二区三区| 国产欧美一区二区精品秋霞影院 | 国产精品久久久久久久久久免费看 | 成人做爰69片免费看网站| 国产欧美一区二区精品婷婷| 精品久久久久久久久久久久包黑料 | 91福利社在线观看| 欧美一区午夜视频在线观看| 99国产精品视频免费观看| 国产一区二区三区精品欧美日韩一区二区三区 | 成人污污视频在线观看| 国产精选一区二区三区| 国产乱码精品一品二品| 国产在线播放一区| 国产一区 二区 三区一级| 国产乱码精品一区二区三区忘忧草 | 亚洲电影中文字幕在线观看| 一区二区三区四区在线播放 | 国产拍欧美日韩视频二区| www国产成人免费观看视频 深夜成人网| 日韩精品中文字幕一区二区三区| 日韩精品专区在线影院观看| 欧美v日韩v国产v| 国产亚洲精品精华液| 亚洲欧洲精品一区二区三区| 欧美日韩一区二区在线观看| 欧美日韩久久一区| 91精品国产美女浴室洗澡无遮挡| 日韩免费看网站| 中文字幕的久久| 亚洲精品高清在线观看| 亚洲高清免费观看| 久久精品免费观看| 岛国一区二区在线观看| 91精品1区2区| 精品区一区二区| 国产精品传媒入口麻豆| 性做久久久久久| 国内精品久久久久影院一蜜桃| 国产91露脸合集magnet| 欧美在线你懂的| 99精品视频在线播放观看| 在线亚洲免费视频| 欧美精品一区二区蜜臀亚洲| 中文字幕一区二区不卡| 久久黄色级2电影| 日韩免费观看2025年上映的电影| 91麻豆精品国产91久久久| 亚洲国产精品成人综合色在线婷婷| 成人欧美一区二区三区小说 | 欧美一区二区三区免费大片 | 蜜桃在线一区二区三区| 福利一区二区在线观看| 欧美精品日日鲁夜夜添| 色综合久久综合网欧美综合网| 欧美性欧美巨大黑白大战| 久久精品水蜜桃av综合天堂| 亚洲国产另类av| 成人a区在线观看| 日韩一区二区在线观看视频播放| 中文字幕一区二区三区四区| 日韩精品欧美精品| 99re视频精品| 国产亚洲欧美日韩在线一区| 日韩国产欧美在线观看| 91亚洲精品久久久蜜桃网站 | 欧美日韩一级二级三级| 国产欧美一区二区精品性色超碰| 亚洲成在线观看| 99精品视频一区二区| 久久只精品国产| 美女网站一区二区| 欧美精品免费视频| 亚洲欧美日韩中文播放| 成人综合婷婷国产精品久久免费| 日韩一卡二卡三卡四卡| 亚洲va韩国va欧美va| 99精品一区二区三区| 中文字幕国产一区| 国产在线精品一区二区不卡了| 91精品国产综合久久福利软件| 亚洲精品乱码久久久久久久久 | 欧日韩精品视频| 亚洲猫色日本管| k8久久久一区二区三区| 国产丝袜欧美中文另类| 精品亚洲国内自在自线福利| 91精品国产欧美一区二区18| 亚洲高清不卡在线观看| 欧美日韩极品在线观看一区| 国内欧美视频一区二区| 日韩一区二区三区在线观看| 亚洲国产综合在线| 欧美三级中文字幕在线观看|