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

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

?? myedlin.c

?? 一個小的行編譯器程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
////////////////////////////////////////////////////////////////////////////
// 復(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, APPEND);
				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, APPEND);
					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')
	{
		exit(0);
	}
}

//////////////////////////////////////////////////////////////////////////
// 保存并退出
void sc_E()
{
	WriteFile(Currentfname);
	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為大寫的命令字符

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

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合咪咪久久| 成人性生交大片免费看中文 | 国产精品情趣视频| 欧美亚州韩日在线看免费版国语版| 免费观看一级特黄欧美大片| 日本一区二区三区四区 | 精品日韩99亚洲| 色香蕉成人二区免费| 黄网站免费久久| 午夜国产精品一区| 亚洲精品伦理在线| 国产精品欧美一区二区三区| 日韩午夜在线影院| 欧美乱妇15p| 91麻豆免费视频| 国产成人aaa| 激情综合五月天| 午夜精品在线视频一区| 亚洲精品视频观看| 中文字幕日本不卡| 国产女人18毛片水真多成人如厕| 欧美一区二区免费视频| 欧美在线免费观看视频| 99精品视频一区| 成人av电影观看| 国产成人av一区二区三区在线 | 久久精品国产网站| 午夜精品福利一区二区蜜股av| 亚洲精品国产精品乱码不99 | 麻豆精品在线播放| 日韩高清不卡一区| 秋霞成人午夜伦在线观看| 夜夜亚洲天天久久| 亚洲理论在线观看| 亚洲精品国产精品乱码不99 | 久久综合九色综合欧美98| 欧美一级二级三级蜜桃| 日韩三级高清在线| 日韩小视频在线观看专区| 91精品福利在线一区二区三区 | 中文字幕一区二区日韩精品绯色| 欧美国产日韩a欧美在线观看| 久久色成人在线| 久久免费美女视频| 国产午夜精品一区二区三区四区| 国产日韩精品一区二区浪潮av| 国产午夜一区二区三区| 国产精品丝袜一区| 亚洲欧洲制服丝袜| 亚洲观看高清完整版在线观看| 亚洲成精国产精品女| 亚洲第一综合色| 美女精品自拍一二三四| 经典三级在线一区| 成人a免费在线看| 欧美最猛黑人xxxxx猛交| 欧美另类一区二区三区| 精品日韩一区二区三区 | 中文字幕乱码久久午夜不卡 | 蜜臀国产一区二区三区在线播放| 国产一区激情在线| 成人18精品视频| 欧美在线观看一二区| 91精品国产综合久久蜜臀| 欧美精品一区二区三区蜜臀| 日本一区二区成人在线| 亚洲激情欧美激情| 美女视频网站久久| 不卡高清视频专区| 欧美另类久久久品| 久久久久99精品国产片| 中文字幕一区二区三区精华液| 亚洲成人免费视| 国产精品18久久久久久久久久久久| 国产福利视频一区二区三区| 色香蕉久久蜜桃| 精品国产乱码久久久久久闺蜜| 国产精品久久久一本精品| 亚洲综合免费观看高清完整版 | 91黄视频在线| 精品免费国产二区三区| 亚洲品质自拍视频网站| 麻豆国产精品一区二区三区| 91亚洲永久精品| 欧美成人官网二区| 亚洲欧美偷拍三级| 国产在线视频精品一区| 在线亚洲+欧美+日本专区| 久久蜜桃av一区二区天堂| 亚洲国产一区视频| 福利电影一区二区| 欧美狂野另类xxxxoooo| 中文一区在线播放| 久久精品99国产精品| 色呦呦国产精品| 久久久99精品免费观看| 五月婷婷久久丁香| 97精品久久久午夜一区二区三区 | 最好看的中文字幕久久| 精品无码三级在线观看视频| 欧美性一级生活| 国产精品久久久久7777按摩| 麻豆国产一区二区| 欧美精品免费视频| 亚洲男女一区二区三区| 国产成人精品aa毛片| 日韩精品一区二区三区中文精品 | 成人小视频免费在线观看| 91精品国产综合久久久久久漫画| 亚洲视频在线一区观看| 国产成a人亚洲| 日韩精品在线一区| 亚洲不卡av一区二区三区| 99国产精品国产精品毛片| 久久精品一区二区三区四区| 人人超碰91尤物精品国产| 欧美日韩一区二区三区高清 | 韩国精品主播一区二区在线观看 | 亚洲自拍偷拍图区| av电影在线观看不卡| 国产亚洲一区字幕| 国产乱一区二区| 欧美电视剧在线观看完整版| 奇米精品一区二区三区在线观看一| 欧美日韩在线播放三区| 亚洲精品综合在线| 91在线云播放| 中文字幕制服丝袜一区二区三区 | 精品av综合导航| 久色婷婷小香蕉久久| 日韩美女视频一区二区在线观看| 日本色综合中文字幕| 欧美一区二区国产| 乱一区二区av| 久久影院午夜论| 精品一区二区三区免费毛片爱| 日韩三级视频中文字幕| 麻豆精品久久精品色综合| 精品国产一区二区三区久久久蜜月 | 色悠久久久久综合欧美99| 亚洲另类春色国产| 欧美视频你懂的| 日本午夜精品视频在线观看 | 成人性色生活片免费看爆迷你毛片| 国产日韩欧美一区二区三区乱码 | 高清shemale亚洲人妖| 国产精品国产三级国产普通话蜜臀| 成人av网在线| 亚洲综合一二区| 欧美美女一区二区三区| 免费观看成人鲁鲁鲁鲁鲁视频| 精品日韩一区二区| 国产99精品在线观看| 亚洲卡通动漫在线| 欧美嫩在线观看| 麻豆精品新av中文字幕| 中国色在线观看另类| 一本色道久久综合狠狠躁的推荐| 亚洲一级电影视频| 欧美mv和日韩mv国产网站| 国产a精品视频| 亚洲免费观看在线视频| 欧美日韩情趣电影| 国内精品久久久久影院色| 国产精品久久久久久久第一福利| 91久久精品网| 老司机午夜精品| 亚洲欧美影音先锋| 欧美日韩国产123区| 国产乱码精品一区二区三区忘忧草| 亚洲男同1069视频| 日韩精品一区二区三区蜜臀| 成人精品鲁一区一区二区| 一区二区三区鲁丝不卡| 日韩女优电影在线观看| av毛片久久久久**hd| 日韩精品视频网站| 综合网在线视频| 精品三级av在线| 色吧成人激情小说| 韩国av一区二区三区在线观看| 亚洲人成网站精品片在线观看| 日韩欧美色电影| 色婷婷综合久色| 国产精品一级片| 亚洲成人一二三| 中文字幕一区二区三区在线不卡 | 国产一区二区在线影院| 亚洲与欧洲av电影| 国产亚洲欧美日韩俺去了| 欧美日免费三级在线| 成人自拍视频在线观看| 琪琪久久久久日韩精品| 亚洲色图视频免费播放| 久久众筹精品私拍模特| 欧美精品一卡二卡| 色婷婷综合久久久久中文一区二区| 激情综合色综合久久| 亚洲国产成人tv| 亚洲免费观看视频|