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

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

?? myedlin.c

?? 一個(gè)小的行編譯器程序
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
				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;
}

/////////////////////////////////////////////////////////////////////////
// 移動(dòng)文本塊
//
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; // 轉(zhuǎn)換c為大寫(xiě)的命令字符

	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;
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区0| 国产精品综合网| av毛片久久久久**hd| 91精品久久久久久久91蜜桃| 国产精品二区一区二区aⅴ污介绍| 午夜欧美电影在线观看| av在线这里只有精品| 久久综合色婷婷| 日韩主播视频在线| 在线观看网站黄不卡| 国产午夜精品一区二区三区四区| 日韩精品免费视频人成| 在线观看av一区| 中文字幕一区二区三区在线播放| 国产综合久久久久久久久久久久 | 亚洲资源在线观看| 国产成人精品1024| 精品国精品自拍自在线| 午夜欧美大尺度福利影院在线看| 色婷婷综合久久久久中文一区二区| 久久久久成人黄色影片| 美女视频黄频大全不卡视频在线播放| 日本精品一区二区三区高清 | 久久嫩草精品久久久精品| 日产国产欧美视频一区精品| 欧美日韩一区高清| 一区二区三区四区在线| 99国产欧美另类久久久精品 | 欧美日韩色一区| 一区二区三区欧美亚洲| 91在线观看下载| 国产精品乱码久久久久久| 国产精品99久久久久久似苏梦涵 | 欧美一区二区三区电影| 亚洲1区2区3区4区| 欧美视频一二三区| 午夜视频久久久久久| 欧美唯美清纯偷拍| 亚洲国产综合视频在线观看| 在线免费观看不卡av| 亚洲综合区在线| 在线欧美一区二区| 亚洲图片一区二区| 欧美人妖巨大在线| 日韩国产成人精品| 欧美电视剧免费全集观看| 另类专区欧美蜜桃臀第一页| 欧美www视频| 国产久卡久卡久卡久卡视频精品| 久久久久久久久久久久电影| 国产成人自拍网| 国产精品久久久久久久久免费丝袜| 成人av在线观| 亚洲伦在线观看| 欧美亚洲一区三区| 日韩福利电影在线观看| 日韩欧美成人午夜| 国产精品影音先锋| 日韩一区有码在线| 欧美性感一区二区三区| 日本成人在线一区| 国产亚洲精品福利| 99久久精品国产一区二区三区| 亚洲男人的天堂网| 欧美精品久久久久久久久老牛影院| 久久精品72免费观看| 久久亚洲春色中文字幕久久久| 成人性生交大合| 一区二区三区免费在线观看| 欧美日韩精品是欧美日韩精品| 人妖欧美一区二区| 国产欧美一区视频| 在线欧美日韩精品| 九色综合狠狠综合久久| 国产精品嫩草影院com| 色综合久久综合网97色综合 | 亚洲天堂精品视频| 欧美日韩国产影片| 国产一区二区看久久| 亚洲欧美日韩国产一区二区三区| 欧美精品黑人性xxxx| 国产一区欧美一区| 亚洲精品v日韩精品| 欧美一级黄色大片| www.欧美日韩国产在线| 日日噜噜夜夜狠狠视频欧美人 | 久久综合九色综合欧美98| kk眼镜猥琐国模调教系列一区二区| 亚洲一区二区三区四区在线观看| 精品国产一区二区三区忘忧草| proumb性欧美在线观看| 免费观看在线色综合| 国产精品久线观看视频| 在线成人免费视频| av在线这里只有精品| 日日摸夜夜添夜夜添国产精品 | 日韩一区二区中文字幕| 成人精品视频一区| 日韩高清在线观看| 亚洲天堂a在线| 精品国产伦一区二区三区观看体验| 不卡av在线免费观看| 麻豆成人免费电影| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 91精品国产欧美一区二区成人| 成人网在线免费视频| 美女久久久精品| 亚洲主播在线观看| 国产精品卡一卡二卡三| 精品国产污网站| 欧美日韩综合色| av在线这里只有精品| 经典三级一区二区| 天天做天天摸天天爽国产一区| 国产精品亲子伦对白| 日韩欧美视频在线| 欧美日韩精品一区二区三区四区| av激情成人网| 国内精品自线一区二区三区视频| 亚洲成a人v欧美综合天堂| 日韩理论在线观看| 久久精品日产第一区二区三区高清版| 欧美日韩dvd在线观看| 91视频在线观看免费| 国产精品69毛片高清亚洲| 毛片不卡一区二区| 污片在线观看一区二区| 亚洲免费观看在线视频| 国产精品毛片无遮挡高清| 欧美精品一区二区三区视频| 91麻豆精品国产| 在线观看欧美精品| 91免费观看在线| 成人免费视频一区| 国产精品一区二区久激情瑜伽| 美脚の诱脚舐め脚责91| 人妖欧美一区二区| 丝袜亚洲精品中文字幕一区| 亚洲国产va精品久久久不卡综合| 亚洲天堂成人在线观看| 中文字幕亚洲区| 亚洲欧洲精品一区二区精品久久久| 国产香蕉久久精品综合网| 26uuu国产日韩综合| 欧美成人a在线| 欧美成人三级在线| 日韩一区二区电影| 日韩一级片在线观看| 日韩小视频在线观看专区| 欧美高清一级片在线| 欧美日韩大陆一区二区| 欧美日韩三级一区二区| 欧美日韩在线精品一区二区三区激情| 色妹子一区二区| 日本高清不卡一区| 欧美性一区二区| 欧美色视频一区| 欧美裸体一区二区三区| 777色狠狠一区二区三区| 欧美日韩精品专区| 在线播放日韩导航| 欧美一区二区三区在线电影| 欧美一区二区私人影院日本| 欧美一区二区三区系列电影| 日韩亚洲电影在线| 精品精品国产高清a毛片牛牛| 亚洲精品一区二区三区香蕉 | 在线电影国产精品| 日韩欧美中文一区| 精品成人免费观看| 久久精品人人做人人综合| 国产亚洲精品中文字幕| 国产精品久久久久久妇女6080| 亚洲婷婷国产精品电影人久久| 一区二区三区在线看| 石原莉奈在线亚洲三区| 美女一区二区视频| 国产主播一区二区| 99久久精品免费| 欧美日韩一区二区三区四区五区| 欧美老肥妇做.爰bbww视频| 日韩一区二区不卡| 国产欧美va欧美不卡在线| 亚洲三级在线免费| 午夜激情综合网| 激情久久五月天| www.日本不卡| 欧美精选一区二区| 久久综合久久综合九色| 综合久久久久久| 日韩成人免费在线| 国产成都精品91一区二区三| 色综合色狠狠综合色| 欧美一卡二卡三卡| 中文字幕不卡三区| 亚洲国产成人av网| 精品在线一区二区三区| av中文一区二区三区| 欧美日韩在线播放| 久久欧美一区二区|