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

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

?? myedlin.c

?? 一個小的行編譯器程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
				CurrentLineNum++;
				genNewLine = 0;
			}
			
			// add char to clistType link list
			ccp = addCharToLine(ccp, cp->c);
			if (CurrentLinePtr->line == NULL)
			{
				CurrentLinePtr->line = ccp;
			}
		}
		
		if (toln == LastLineNum)
		{
			LastLineNum = CurrentLineNum;
			BufferTail = CurrentLinePtr;
		}
		else
		{
			LastLineNum++;
		}
	}
	else
	{
		if (toln>=startln && toln<=endln) return 0; // 如果目的行在起始行和中止行之間則不拷貝

		for (line=startln; line<=endln; line++)
		{
			if (copy_behind)
			{
				SeekPos(line, SEEK_SET);
			}
			else
			{
				SeekPos(line+line-startln, SEEK_SET);
			}
			cp = CurrentLinePtr->line;

			for(genNewLine=1,ccp=NULL; cp!=NULL;cp = cp->next)
			{
				// add a new line to lineType link list
				if (genNewLine)
				{
					SeekPos(toln+line-startln, SEEK_SET);
					CurrentLinePtr = addNewLine(CurrentLinePtr);
					CurrentLineNum++;
					genNewLine = 0;
				}
				
				// add char to clistType link list
				ccp = addCharToLine(ccp, cp->c);
				if (CurrentLinePtr->line == NULL)
				{
					CurrentLinePtr->line = ccp;
				}
			}
			
			if (copy_behind)
			{
				LastLineNum = CurrentLineNum;
				BufferTail = CurrentLinePtr;
			}
			else
			{
				LastLineNum++;
			}
		}
	}

	return 1;
}

/////////////////////////////////////////////////////////////////////////
// 移動文本塊
//
void sc_M(int startln, int endln, int toln)
{
	if (toln>=startln && toln<=endln) return;

	sc_C(startln, endln, toln);

	if (toln > endln)
	{
		sc_D(startln, endln);
	}
	else
	{
		sc_D(startln+endln-startln+1, endln+endln-startln+1);
	}
}

/////////////////////////////////////////////////////////////////////////
// 查找到后,替換文本
//
void sc_R(int startln, int endln, char* schtext, char* rpltext)
{
	int pos;
	int st_length;
	int i;
	clistType *last_ch_address;
	clistType *next_ch_address;
	clistType *cp;
	clistType *tp;
	
	pos = sc_S(startln, endln, schtext);
	cp = CurrentLinePtr->line;
	st_length = strlen(schtext);

	if (pos)
	{
		for (i=1; i<pos; i++)
		{
			cp = cp->next;
		}

		last_ch_address = cp->prev;

		for (i=0; i<st_length; i++)
		{
			tp = cp->next;
			free(cp);
			cp = tp;
		}

		next_ch_address = cp;

		cp = last_ch_address;
		for (i=0; rpltext[i]!='\0'; i++)
		{
			cp = addCharToLine(cp, rpltext[i]);
		}

		cp->next = next_ch_address;
		next_ch_address->prev = cp;
	}
}

/////////////////////////////////////////////////////////////////////////
// 退出
//
void sc_Q()
{
	char c;
	do
	{
		printf("Abort edit (Y/N)?");
		c = toupper(getche());
		printf("\n");
	} while (c!='Y' && c!='N');
	if (c == 'Y')
	{
		if (LastLineNum)
		{
			sc_D(1, LastLineNum);
		}
		exit(0);
	}
}

//////////////////////////////////////////////////////////////////////////
// 保存并退出
//
void sc_E()
{
	WriteFile(Currentfname);
	if (LastLineNum)
	{
		sc_D(1, LastLineNum);
	}
	exit(0);
}

//////////////////////////////////////////////////////////////////////
// 顯示命令幫助
//
void sc_H()
{
	printf("Copy\t\t\tC,[line_no,|[startline, endline,]]toline\n");
	printf("Delete\t\t\tD[,line_no|[,startline, endline]]\n");
	printf("End(save file)\t\tE\n");
	printf("Help\t\t\tH\n");
	printf("Insert\t\t\tI[,line_no]\n");
	printf("List\t\t\tL[,line_no|[,startline, endline]]\n");
	printf("Move\t\t\tM,[line_no,|[startline, endline,]],toline\n");
	printf("Quit\t\t\tQ\n");
	printf("Replace\t\t\tR,[line_no,|[startline, endline,]]oldtext,newtext\n");
	printf("Search\t\t\tS,[line_no,|[startline, endline,]]searchtext\n");
}

////////////////////////////////////////////////////////////////////
// 解析命令
//
void ParseCommand()
{
	int comma_count;
	int i,j;
	char c;
	char *result;
	for (comma_count=0,i=0; CmdStr[i]!='\0'; i++)
	{
		if (CmdStr[i] == ',')
		{
			comma_count++;
		}
	}
	ParaCount = comma_count+1;
	
	ParaArray[0][0] = CmdStr[0];
	for (i=1; i<ParaCount; i++)
	{
		for (j=0,result=CmdStr; j<i; j++)
		{
			result = strpbrk(result, ",");
			result++;
		}

		strcpy(ParaArray[i], result);

		for (j=0; ParaArray[i][j]!='\0'; j++)
		{
			if (ParaArray[i][j]  == ',') ParaArray[i][j] = '\0';
		}
	}

	c = ParaArray[0][0];
	if (c >= 97) c = c-32; // 轉換c為大寫的命令字符

	switch (c)
	{
	case 'I': 
		if (ParaCount > 2)
		{
			printf("error command");
			return;
		}
		else if (ParaCount == 2)
		{
			int templn = atoi(ParaArray[1]);
			if (templn == 0)
			{
				printf("error command\n");
				return;
			}
			sc_I(templn);
		}
		else
		{
			sc_I(CurrentLineNum);
		}
		break;

	case 'L':
		if (ParaCount > 3)
		{
			printf("error command\n");
			return;
		}
		else if (ParaCount == 3)
		{
			int startln = atoi(ParaArray[1]);
			int endln = atoi(ParaArray[2]);
			if (startln==0 || endln==0)
			{
				printf("error command\n");
				return;
			}
			sc_L(startln, endln);
		}
		else if (ParaCount == 2)
		{
			int templn = atoi(ParaArray[1]);
			if (templn == 0)
			{
				printf("error command\n");
				return;
			}
			sc_L(templn, templn);
		}
		else
		{
			if (CurrentLineNum)
			{
				sc_L(CurrentLineNum, CurrentLineNum);
			}
			else
			{
				printf("Empty!\n");
				return;
			}
		}
		break;

	case 'D':
		if (ParaCount > 3)
		{
			printf("error command\n");
			return;
		}
		else if (ParaCount == 3)
		{
			int startln = atoi(ParaArray[1]);
			int endln = atoi(ParaArray[2]);
			if (startln==0 || endln==0)
			{
				printf("error command\n");
				return;
			}
			sc_D(startln, endln);
		}
		else if (ParaCount == 2)
		{
			int templn = atoi(ParaArray[1]);
			if (templn == 0)
			{
				printf("error command\n");
				return;
			}
			sc_D(templn, templn);
		}
		else
		{
			if (CurrentLineNum)
			{
				sc_D(CurrentLineNum, CurrentLineNum);
			}
			else
			{
				printf("No line can be deleted!\n");
				return;
			}
		}
		break;

	case 'S':
		if (ParaCount == 2)
		{
			sc_S(CurrentLineNum, CurrentLineNum, ParaArray[1]);
		}
		else if (ParaCount == 4)
		{
			int startln, endln;
			startln = atoi(ParaArray[1]);
			endln = atoi(ParaArray[2]);
			if (startln==0 || endln==0)
			{
				printf("Error command!\n");
				return;
			}
			sc_S(startln, endln, ParaArray[3]);
		}
		else
		{
			printf("Error command!\n");
			return;
		}
		break;

	case 'C':
		if (ParaCount == 2)
		{
			int toln;
			toln = atoi(ParaArray[1]);
			if (toln == 0)
			{
				printf("error command\n");
				return;
			}
			sc_C(CurrentLineNum, CurrentLineNum, toln);
		}
		else if (ParaCount == 4)
		{
			int startln, endln, toln;
			startln = atoi(ParaArray[1]);
			endln = atoi(ParaArray[2]);
			toln = atoi(ParaArray[3]);
			if (startln==0 || endln==0 || toln==0)
			{
				printf("error command\n");
				return;
			}
			sc_C(startln, endln, toln);
		}
		else
		{
			printf("error command\n");
			return;
		}
		break;

	case 'M':
		if (ParaCount == 2)
		{
			int toln;
			toln = atoi(ParaArray[1]);
			if (toln == 0)
			{
				printf("error command\n");
				return;
			}
			sc_M(CurrentLineNum, CurrentLineNum, toln);
		}
		else if (ParaCount == 4)
		{
			int startln, endln, toln;
			startln = atoi(ParaArray[1]);
			endln = atoi(ParaArray[2]);
			toln = atoi(ParaArray[3]);
			if (startln==0 || endln==0 || toln==0)
			{
				printf("error command\n");
				return;
			}
			sc_M(startln, endln, toln);
		}
		else
		{
			printf("error command\n");
			return;
		}
		break;

	case 'R':
		if (ParaCount == 5)
		{
			int startln, endln;
			startln = atoi(ParaArray[1]);
			endln = atoi(ParaArray[2]);
			if (startln==0 || endln==0)
			{
				printf("error command\n");
				return;
			}
			sc_R(startln, endln, ParaArray[3], ParaArray[4]);
		}
		else if (ParaCount == 4)
		{
			int lineno = atoi(ParaArray[1]);
			if (lineno ==0)
			{
				printf("error command\n");
				return;
			}
			sc_R(lineno, lineno, ParaArray[2], ParaArray[3]);
		}
		else if (ParaCount == 3)
		{
			sc_R(CurrentLineNum, CurrentLineNum, ParaArray[1], ParaArray[2]);
		}
		else
		{
			printf("error command\n");
			return;
		}
		break;

	case 'Q':
		sc_Q();
		break;

	case 'E':
		sc_E();
		break;

	case 'H':
		sc_H();
		break;

	default:
		printf("Invalid command!\n");
		break;
	}
}


////////////////////////////////////////////////////////////////////////////////
// 程序入口
//
int main(int argc, char* argv[])
{
	if (argc != 2)
	{
		printf("\nFilename is missing!\n");
		exit(0);
	}
	else
	{
		strcpy(Currentfname,argv[1]);
		ReadFile();
	}
	for(;;)
	{
		putch('*');
		gets(CmdStr);
		ParseCommand();
	}

	return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美日韩综合aⅴ视频| 91在线观看高清| 日韩三级中文字幕| 成人激情开心网| 亚洲国产精品自拍| 日韩欧美亚洲另类制服综合在线| 粉嫩绯色av一区二区在线观看| 偷窥少妇高潮呻吟av久久免费| 久久综合色天天久久综合图片| 色婷婷久久久亚洲一区二区三区 | 欧美不卡在线视频| 成人网在线免费视频| 中文字幕日韩一区二区| 日韩一区二区三区视频在线 | 日本网站在线观看一区二区三区| 欧美一级理论性理论a| 99久久精品费精品国产一区二区| 日本亚洲欧美天堂免费| 亚洲图片欧美激情| 久久这里都是精品| 久久久久国产精品麻豆| 亚洲欧洲日韩综合一区二区| 欧美精品第1页| 国产盗摄一区二区三区| 成人av在线资源| 一本大道久久a久久综合| 一本高清dvd不卡在线观看| 欧美视频一区二区三区四区 | 国产清纯白嫩初高生在线观看91| 国产亚洲综合在线| 97久久久精品综合88久久| 欧美色图12p| 韩日欧美一区二区三区| 日韩电影在线观看网站| 亚洲成av人片| 国产精品久久久久四虎| 欧美日韩成人综合| 狠狠色狠狠色合久久伊人| 蜜桃一区二区三区在线观看| 亚洲欧美日本在线| 亚洲国产精品嫩草影院| 国产日韩欧美精品在线| 成人久久久精品乱码一区二区三区| 欧美国产精品专区| 色偷偷88欧美精品久久久| 亚洲自拍另类综合| 国产在线播精品第三| 久久久欧美精品sm网站| 中文字幕精品一区二区精品绿巨人| 国产精品免费久久久久| 日韩码欧中文字| 国产成人av一区二区三区在线观看| 日韩一区欧美小说| 久久综合久色欧美综合狠狠| 日韩一区二区三区av| 日韩三级伦理片妻子的秘密按摩| 国产偷v国产偷v亚洲高清| 欧美视频中文一区二区三区在线观看| 国产日韩欧美a| 国产成人精品免费一区二区| 91久久精品网| 中文字幕日韩一区| 国内不卡的二区三区中文字幕| 亚洲va韩国va欧美va精品| 福利一区二区在线| 久久aⅴ国产欧美74aaa| 午夜电影一区二区| 国产精品久久久久久亚洲伦| 亚洲欧洲日产国产综合网| 色视频欧美一区二区三区| 成人免费视频免费观看| 国产91丝袜在线观看| 国产精品18久久久| 欧美在线制服丝袜| 欧美人伦禁忌dvd放荡欲情| 欧美中文字幕一区二区三区| 久久女同精品一区二区| 婷婷久久综合九色综合绿巨人| 国产一区在线视频| 欧美亚洲一区三区| 亚洲精选视频免费看| 青青草国产精品亚洲专区无| 成人一区二区三区在线观看| 欧美一级免费观看| 国模无码大尺度一区二区三区| 日本一区二区成人| 一本大道av一区二区在线播放| 在线视频综合导航| www国产精品av| 蜜桃视频免费观看一区| 欧美一区二区三区播放老司机| 色吧成人激情小说| 一本一道综合狠狠老| 日韩欧美一级在线播放| 一区二区三区在线免费播放| 成人永久看片免费视频天堂| 337p日本欧洲亚洲大胆色噜噜| 日产精品久久久久久久性色| 欧美午夜精品一区二区三区| 亚洲人成网站影音先锋播放| 国产成a人亚洲| 久久久影视传媒| 国内精品国产成人国产三级粉色| 欧美一级精品在线| 日韩黄色免费网站| 欧美精品在线视频| 欧美精品一级二级| 成人免费高清视频在线观看| 亚洲视频一区在线| 91.麻豆视频| 成年人午夜久久久| 亚洲综合精品自拍| 欧美精品一区二区三区在线| 国产高清在线观看免费不卡| 亚洲欧美日韩精品久久久久| 欧美乱妇23p| 从欧美一区二区三区| 午夜一区二区三区视频| 久久麻豆一区二区| 欧美日韩精品一区二区三区四区| 欧洲色大大久久| 奇米777欧美一区二区| 亚洲女人小视频在线观看| 日韩欧美在线网站| 91国偷自产一区二区开放时间 | 丰满白嫩尤物一区二区| 亚洲女人的天堂| 欧美国产激情一区二区三区蜜月| 日韩一级视频免费观看在线| 色狠狠一区二区三区香蕉| 色综合天天综合给合国产| 成人在线综合网| 欧美色图12p| 欧美电视剧在线观看完整版| 国产麻豆精品视频| 亚洲一区二区三区视频在线播放| 久久久久久久电影| 亚洲精品在线免费观看视频| 久久青草欧美一区二区三区| 日韩综合一区二区| 在线播放中文一区| 日本vs亚洲vs韩国一区三区| 精品欧美一区二区久久 | 99精品热视频| 天天做天天摸天天爽国产一区| 日韩午夜在线播放| av亚洲精华国产精华精| 亚洲国产精品麻豆| 国产欧美一区二区三区在线老狼| 在线观看视频一区二区| 精品一区二区免费在线观看| 中文字幕日韩av资源站| 91精品国产免费| 99久久久无码国产精品| 欧美成人激情免费网| 久久久久亚洲综合| 中文字幕在线一区免费| 午夜精品福利视频网站| 麻豆一区二区在线| 成人精品电影在线观看| 一本大道久久a久久综合婷婷| 欧美日韩精品一区二区三区| 97超碰欧美中文字幕| 91超碰这里只有精品国产| 欧美xxx久久| 亚洲欧美色一区| 欧美bbbbb| a级精品国产片在线观看| 欧美日韩第一区日日骚| 中文字幕欧美国产| 亚洲v中文字幕| 福利视频网站一区二区三区| 欧美日韩中字一区| 久久精品无码一区二区三区| 亚洲国产日产av| 国产激情精品久久久第一区二区| 色久优优欧美色久优优| 久久久久久久久久久久久久久99 | 国产美女久久久久| 日本精品裸体写真集在线观看 | 久久综合九色综合欧美98| 制服.丝袜.亚洲.另类.中文| 久久久精品国产免大香伊 | 欧美丰满美乳xxx高潮www| 蜜桃视频在线观看一区二区| 亚洲欧美区自拍先锋| 久久久精品欧美丰满| 中文字幕一区三区| 欧美一级二级三级蜜桃| 欧美三级电影在线观看| 99国产精品久| 成人午夜在线播放| 国产福利一区在线观看| 久久99国产精品久久| 日本免费新一区视频| 视频一区中文字幕国产| 日韩专区在线视频| 亚洲一级二级三级| 亚洲自拍都市欧美小说| 一区二区在线电影|