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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? myedlin.c

?? 一個(gè)小的行編譯器程序
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <conio.h>

typedef struct clistTag
{
     char  c;
     struct clistTag *next, *prev;

} clistType;

typedef struct lineTag
{
     clistType *line;
     struct lineTag *next, *prev;

} lineType;

char        Currentfname[BUFSIZ];
lineType   *BufferHead = NULL;
lineType   *BufferTail = NULL;
lineType   *CurrentLinePtr = NULL;
int         CurrentLineNum = 0;
int         LastLineNum = 0;
char		CmdStr[128];
char		ParaArray[5][128];
int			ParaCount;

///////////////////////////////////////////////////////////////////////
// 在cp指向的行之后添加一行空行,出錯(cuò)則返回NULL
//
lineType* addNewLine(lineType *cp)
{
	lineType *tp;
	
	tp = (lineType *) malloc(sizeof(lineType));
	
	if (cp != NULL)
	{
		tp->next = cp->next;
		tp->prev = cp;
		tp->line = NULL;
		
		if (cp->next != NULL)
			cp->next->prev = tp;
		else
			BufferTail = tp;
		
		cp->next = tp;
	}
	else
	{
		tp->next = NULL;
		
		tp->prev = NULL;
		tp->line = NULL;
		
		BufferHead = tp;
	}
	
	tp->prev = cp;
	
	return tp;
}


///////////////////////////////////////////////////////////////////////////////
// 添加一個(gè)字符到鏈表中去
//
clistType * addCharToLine(clistType *cp, char c)
{
     clistType *tp;

     tp = (clistType *) malloc(sizeof(clistType));
     tp->next = NULL;
     tp->prev = cp;
     tp->c = c;
     if (cp != NULL)
          cp->next = tp;
     
     return tp;
}


///////////////////////////////////////////////////////////////////////////////
// 把文件的內(nèi)容讀到內(nèi)存中來(lái).
//
void ReadFile(void)
{
     FILE *fp;
     char c;
     int genNewLine = 1, charcount = 0;
     clistType *ccp = NULL;

     CurrentLineNum = 0;
     CurrentLinePtr = NULL;

     if ((fp = fopen(Currentfname, "r")) == NULL)
     {
          BufferHead = BufferTail = NULL;

          return;
     }

     while ((c = fgetc(fp)) != EOF)
     {
          // 添加一行新行到lineType鏈表
          if (genNewLine)
          {
               CurrentLinePtr = addNewLine(CurrentLinePtr);
               CurrentLineNum++;
               genNewLine = 0;
          }

          // 添加一個(gè)字符到clistType鏈表
          ccp = addCharToLine(ccp, c);
          charcount++;
          if (CurrentLinePtr->line == NULL)
               CurrentLinePtr->line = ccp;

          // 檢測(cè)換行標(biāo)志
          if (c == '\n')
          {
               ccp = NULL;
               genNewLine = 1;
          }
     }

     fclose(fp);
     LastLineNum = CurrentLineNum;
     BufferTail = CurrentLinePtr;
}


///////////////////////////////////////////////////////////////////////////
// 將p指定的字符鏈表的內(nèi)容輸出到文件或屏幕(stdout)
//
int Println(FILE *fp, clistType *p, int linenum)
{
     int charcount = 0;
     int nlFound = 0;

     if (linenum)
          fprintf(fp, "%6d: ", linenum);

     while (p != NULL)
     {
          fprintf(fp, "%c", p->c);
          nlFound = p->c == '\n' ? 1 : 0;
          p = p->next;
          charcount++;
     }

//     if (nlFound == 0 && fp == stdout)
	 if (nlFound == 0)
          fprintf(fp, "\n");

     return charcount;
}


////////////////////////////////////////////////////////////////////
// 把內(nèi)存中的內(nèi)容寫到文件
//
int WriteFile(char *filename)
{
     char *fname;
     int  charcount = 0;
     FILE *fp;
     lineType *lp = BufferHead;

     fname = (filename == NULL) ? Currentfname : filename;

     if ((fp = fopen(fname, "w")) == NULL)
     {
          fprintf(stdout, "Unable to write to file %s\n", fname);
          return -1;
     }

     while (lp != NULL)
     {
          charcount += Println(fp, lp->line, 0);
          lp = lp->next;
     }

////     printf("Wrote %d\n", charcount);
     return charcount;
}



/////////////////////////////////////////////////////////////////////////
// 根據(jù)三種基準(zhǔn)和偏移量在內(nèi)存中定位到具體的一行為當(dāng)前行
//
int SeekPos(int offset, int origin)
{
     lineType *p;
     int line, lineno;

     switch (origin)
     {
     default:
     case SEEK_SET:
          p = BufferHead;
          line = offset;                   // only positive offsets
          lineno = 1;
          break;

     case SEEK_CUR:
          p = CurrentLinePtr;
          line = CurrentLineNum + offset;  // +- offsets
          lineno = CurrentLineNum;
          break;

     case SEEK_END:
          p = BufferTail;
          line = LastLineNum - offset;     // only positive offsets
          lineno = LastLineNum;
          break;
     }

     if (line > 0 && line <= LastLineNum)
     {
          while (p != NULL)
          {
               if (lineno == line)
               {
                    CurrentLineNum = lineno;
                    CurrentLinePtr = p;

                    return lineno;
               }
               
               switch (origin)
               {
               default:
               case SEEK_SET:
                    p = p->next;
                    lineno++;

                    break;

               case SEEK_CUR:
                    if (offset < 0)
                    {
                         p = p->prev;
                         lineno--;
                    }
                    else
                    {
                         p = p->next;
                         lineno++;
                    }

                    break;

               case SEEK_END:
                    p = p->prev;
                    lineno--;

                    break;
               }
          }
     }

     return 0;
}

///////////////////////////////////////////////////////////////////
// 從內(nèi)存中刪除指定的行
//
int DeleteLine(int lineno)
{
	SeekPos(lineno,SEEK_SET);

	if (CurrentLinePtr != NULL)
	{
		clistType *tcp, *cp = CurrentLinePtr->line;
		lineType *lp;
		
		while (cp != NULL)    // free each char in line
		{
			tcp = cp->next;
			free(cp);
			cp = tcp;
		}
		
		if (CurrentLinePtr->prev != NULL)
			CurrentLinePtr->prev->next = CurrentLinePtr->next;
		if (CurrentLinePtr->next != NULL)
			CurrentLinePtr->next->prev = CurrentLinePtr->prev;
		
		lp = CurrentLinePtr;
		if (CurrentLinePtr->next != NULL)
		{
			// guard against deleting first line
			if (CurrentLinePtr == BufferHead)
				BufferHead = CurrentLinePtr->next;
			
			CurrentLinePtr = CurrentLinePtr->next;
		}
		else
		{
			CurrentLinePtr = CurrentLinePtr->prev;
			BufferTail = CurrentLinePtr;
			if (BufferTail == NULL)   // check for last line == head
				BufferHead = NULL;
		}
		
		free(lp);

		//重新計(jì)算行號(hào)
		if (CurrentLineNum == LastLineNum)
		{
			CurrentLineNum--;
			LastLineNum--;
		}
		else
		{
			LastLineNum--;
		}
		
		return 1;
	}
	
	return 0;
}

/////////////////////////////////////////////////////////////////////////
//  在第line_no行之后插入一行文本,line_no為行號(hào)
//
void sc_I(int line_no)
{
	char str[128];
	int i;
	clistType *ccp = NULL;
	int genNewLine = 1;

	SeekPos(line_no, SEEK_SET); // 定位于line_no行

	gets(str);

    for(i=0;str[i]!='\0';i++)
    {
		if (genNewLine)
		{
			CurrentLinePtr = addNewLine(CurrentLinePtr);
			CurrentLineNum++;
			genNewLine = 0;
		}
		
		ccp = addCharToLine(ccp, str[i]);
		if (CurrentLinePtr->line == NULL)
		{
			CurrentLinePtr->line = ccp;
		}
	}
	
	if (line_no == LastLineNum)
	{
		LastLineNum = CurrentLineNum;
		BufferTail = CurrentLinePtr;
	}
	else
	{
		LastLineNum++;
	}
}

/////////////////////////////////////////////////////////////////////////
//  刪除start_line_no行與end_line_no行之間的文本
//
void sc_D(int start_line_no, int end_line_no)
{
	int line = end_line_no-start_line_no;
	int i;
	for (i=0; i<=line; i++)
	{
		DeleteLine(start_line_no);
	}
}

/////////////////////////////////////////////////////////////////////////
//  顯示start_line_no行與end_line_no行之間的文本
//
void sc_L(int start_line_no, int end_line_no)
{
	int i;
	if (start_line_no==CurrentLineNum && end_line_no==CurrentLineNum)
	{
		Println(stdout, CurrentLinePtr->line, CurrentLineNum);
	}
	else
	{
		for (i=start_line_no; i<=end_line_no; i++)
		{
			SeekPos(i, SEEK_SET);
			Println(stdout, CurrentLinePtr->line, CurrentLineNum);
		}
	}
}

/////////////////////////////////////////////////////////////////////////
//  搜索指定的文本
//
int sc_S(int startln, int endln, char* schtext)
{
	clistType *cp;
	char current_line_text[255];
	char *result;
	int i;
	int lineno;
	if (startln==CurrentLineNum && endln==CurrentLineNum)
	{
		cp = CurrentLinePtr->line;
		for(i=0; i<255; i++)
		{
			if (cp != NULL)
			{
				current_line_text[i] = cp->c;
				cp = cp->next;
			}
			else
			{
				break;
			}
		}
		if (i==255 && cp==NULL)
		{
			printf("Error! The number of character exceeds 255!\n");
			return 0;
		}
		result = strstr(current_line_text, schtext);
		if (result)
		{
			Println(stdout, CurrentLinePtr->line, CurrentLineNum);
			return (result-current_line_text+1);
		}
	}
	else
	{
		for (lineno=startln; lineno<=endln; lineno++)
		{
			SeekPos(lineno, SEEK_SET);
			cp = CurrentLinePtr->line;
			for(i=0; i<255; i++)
			{
				if (cp != NULL)
				{
					current_line_text[i] = cp->c;
					cp = cp->next;
				}
				else
				{
					break;
				}
			}
			if (i==255 && cp==NULL)
			{
				printf("Error! The number of character exceeds 255!\n");
				return 0;
			}
			result = strstr(current_line_text, schtext);
			if (result)
			{
				Println(stdout, CurrentLinePtr->line, CurrentLineNum);
				return (result-current_line_text+1);
			}
		}
	}

	printf("%s not found!\n", schtext);
	return 0;
}

////////////////////////////////////////////////////////////////////////////
// 復(fù)制文本行
//
int sc_C(int startln, int endln, int toln)
{
	clistType *cp;
	clistType *ccp = NULL;
	int line;
	int genNewLine;
	int copy_behind=toln>endln?1:0;

	if (startln==CurrentLineNum && endln==CurrentLineNum)
	{
		cp = CurrentLinePtr->line;

		for(genNewLine=1; cp!=NULL; cp=cp->next)
		{
			// add a new line to lineType link list
			if (genNewLine)
			{
				SeekPos(toln, SEEK_SET);
				CurrentLinePtr = addNewLine(CurrentLinePtr);

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频在线不卡| 欧美激情在线一区二区三区| 成人性生交大片| 日本伊人午夜精品| 亚洲欧洲精品一区二区三区| 欧美一区二区三区在| 色婷婷av久久久久久久| 成人污污视频在线观看| 蜜臀av在线播放一区二区三区| 亚洲欧美视频在线观看视频| 国产亚洲制服色| 日韩一区二区在线看| 欧美色图天堂网| 成人国产精品免费网站| 精品一区二区av| 日韩av网站免费在线| 亚洲国产欧美一区二区三区丁香婷| 日本一区二区久久| 久久久久久久久久美女| 日韩欧美国产不卡| 欧美一区二区三区四区五区| 欧美日韩午夜在线| 欧美午夜一区二区三区| 91麻豆精东视频| 92国产精品观看| 成人av网站在线| 成人黄色777网| 成人国产免费视频| 成人午夜大片免费观看| 国产99精品国产| 丰满亚洲少妇av| 丁香桃色午夜亚洲一区二区三区 | 日本伊人色综合网| 亚洲一区视频在线观看视频| 亚洲精品成人精品456| 国产精品第一页第二页第三页| 国产精品天干天干在线综合| 国产三级三级三级精品8ⅰ区| 欧美精品一区二区在线观看| 337p日本欧洲亚洲大胆精品| 精品国产精品网麻豆系列| 日韩女优电影在线观看| 精品日韩成人av| 久久亚洲精精品中文字幕早川悠里 | 91精品国模一区二区三区| 欧美视频在线一区二区三区 | 亚洲国产成人va在线观看天堂| 18欧美亚洲精品| 亚洲综合色视频| 亚洲午夜成aⅴ人片| 日韩电影在线观看电影| 久久精品久久综合| 国产不卡一区视频| 91丨九色porny丨蝌蚪| 欧美三级电影网| 日韩午夜av一区| 久久久久久97三级| 国产精品乱人伦| 一区二区视频在线看| 污片在线观看一区二区| 韩国精品免费视频| 成人免费电影视频| 欧美视频日韩视频在线观看| 日韩欧美精品在线视频| 欧美国产日韩精品免费观看| 亚洲六月丁香色婷婷综合久久| 天堂一区二区在线| 国内一区二区视频| 99热99精品| 777午夜精品免费视频| 欧美精品一区二区三区四区 | 91性感美女视频| 欧美区视频在线观看| 久久久一区二区三区捆绑**| 亚洲欧美另类久久久精品| 亚洲一区二区欧美日韩| 国模少妇一区二区三区| 91免费视频网址| 日韩一区二区高清| 亚洲欧洲无码一区二区三区| 亚洲第一电影网| 国产高清精品在线| 91福利在线导航| 久久久亚洲国产美女国产盗摄 | 亚洲成a人在线观看| 国产高清不卡一区二区| 欧美三区在线视频| 欧美激情一区二区三区四区| 视频一区视频二区中文| 成人av免费在线观看| 日韩一区二区免费在线电影| 自拍偷拍欧美精品| 国内精品写真在线观看| 欧美在线啊v一区| 精品欧美黑人一区二区三区| 亚洲综合久久久久| 成人丝袜高跟foot| 日韩一级片在线观看| 亚洲日本护士毛茸茸| 黄页网站大全一区二区| 欧美人体做爰大胆视频| 日韩理论片网站| 国产精品正在播放| 日韩欧美成人一区二区| 亚洲国产一区视频| 色综合久久久网| 国产欧美日韩另类一区| 久热成人在线视频| 欧美日韩国产精选| 一区二区不卡在线播放| 成人性色生活片免费看爆迷你毛片| 日韩精品一区二区在线| 午夜精品123| 欧美性videosxxxxx| 亚洲人123区| 91免费国产视频网站| 欧美国产日韩亚洲一区| 国产成人免费视频网站| 久久一夜天堂av一区二区三区| 日韩国产欧美在线视频| 在线观看亚洲精品视频| 亚洲精品国产精华液| 91丨porny丨国产入口| 中文字幕av免费专区久久| 国产成人精品三级| 国产日韩av一区| 高清国产一区二区三区| 久久色中文字幕| 国产美女视频91| 久久婷婷久久一区二区三区| 狠狠色伊人亚洲综合成人| 日韩欧美黄色影院| 九九**精品视频免费播放| 精品美女在线播放| 国产伦精品一区二区三区免费| 日韩久久久精品| 国产真实乱子伦精品视频| ww久久中文字幕| 大陆成人av片| 中文字幕一区二区三区不卡在线| 97se狠狠狠综合亚洲狠狠| 亚洲精品日韩一| 欧美日韩国产乱码电影| 日韩成人一区二区| 日韩精品自拍偷拍| 国产成人综合亚洲91猫咪| 国产农村妇女毛片精品久久麻豆 | 麻豆成人av在线| 精品999在线播放| 成人免费看片app下载| 中文字幕一区二区5566日韩| 色偷偷88欧美精品久久久| 亚洲第一在线综合网站| 日韩一卡二卡三卡| 国产a久久麻豆| 亚洲码国产岛国毛片在线| 欧美视频三区在线播放| 另类调教123区| 亚洲国产精品v| 91香蕉视频黄| 偷拍亚洲欧洲综合| 精品精品国产高清一毛片一天堂| 国产精品一区三区| 亚洲欧美日韩综合aⅴ视频| 欧美裸体一区二区三区| 国产精品一级黄| 一区二区三区电影在线播| 欧美一级免费大片| 成人在线综合网站| 午夜激情久久久| 国产色爱av资源综合区| 欧美日韩一区二区三区高清| 黄色精品一二区| 一区二区三区小说| 日韩片之四级片| 色综合久久久久| 精品一区二区综合| 亚洲蜜臀av乱码久久精品蜜桃| 日韩一区国产二区欧美三区| 91在线视频观看| 美女高潮久久久| 亚洲狠狠丁香婷婷综合久久久| 欧美xxx久久| 欧美色偷偷大香| 久久久午夜精品理论片中文字幕| 色悠悠久久综合| 国产一区二区三区精品视频 | 亚洲人成网站影音先锋播放| 欧美一区二区福利视频| 91麻豆.com| 久久99精品久久久久久动态图| 亚洲精品国产无天堂网2021 | 亚洲1区2区3区4区| 国产精品丝袜一区| 欧美成人aa大片| 欧美日韩一区小说| bt7086福利一区国产| 狠狠色丁香久久婷婷综合_中| 亚洲成人午夜电影| 亚洲欧美另类综合偷拍|