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

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

?? parse_cfgfile.cpp

?? 參照網上的例子改寫的多叉樹的讀寫程序
?? CPP
字號:
#include "parse_cfgfile.h"
#include <stdlib.h>
#include <string.h>
#include "mystack.h"

void load_cfgndvar(struct tree_node **root,char *cfg_filepath)
{

	//  還沒有寫函數體 請補充完整




}

//node_type

void read_fromcfgfile(FILE *fp,struct tree_node **root,struct mystack *s)
{
	//  還沒有寫函數體 請補充完整
	struct tree_node *next_node;
	struct tree_node *curr_node=*root;
	enum node_type tp;
	int lastOp =1; // 0  葉子節點  1  內部節點  2 出棧
	curr_node->nextsibling = NULL;

	
	while( (next_node=next_node_fromfile(fp,&tp) ) != NULL)
	{
		switch (tp)
		{
		case m_leaf:  //葉節點
			{
				if(lastOp == 0 )
				{
					curr_node->firstchild = NULL;
					curr_node->nextsibling =next_node;
				}
				else if(lastOp == 2)
				{
					curr_node->nextsibling =next_node;
				}
				else if (lastOp == 1)
				{
					curr_node->firstchild = next_node;
				}
				curr_node = next_node;
				lastOp = 0;
			}
			break;
		case m_bran0:  //進棧
			{
				if(lastOp == 2  )
				{
				   curr_node->nextsibling = next_node;
				}
				else if (lastOp == 0)
				{
					curr_node->firstchild =NULL;
					curr_node->nextsibling =next_node;
				}
				else if (lastOp == 1 )
				{
					curr_node->firstchild = next_node;
				}
	
				push_stack(s,next_node);
				curr_node = next_node;
				lastOp = 1;
			}
			break;
		case m_bran1:  // 退棧
			{
				if(lastOp == 2)
				{
					curr_node->nextsibling = NULL;
				}
				else if(lastOp == 0)
				{
					curr_node->firstchild = NULL;
					curr_node->nextsibling = NULL;
				}
				else if(lastOp == 1)
				{
					printf("file error");
				}

				curr_node = (struct tree_node *)pop_stack(s);

				//if ( strcmp (curr_node->data,next_node->data) != 0)
				//	printf("file error");

				lastOp = 2;
			}
			break;

		}
	}





}


struct tree_node *next_node_fromfile(FILE *fp,enum node_type *tp)
{
   char tmpLine[512]; 
   char rtnval; 
   int i = 0; 
   int flag = 0;  // 0
   struct tree_node *ptreenode=NULL;
   
   char * tmpS,*tmpE,*p; 
   
   if(  feof(fp)  )
	   return NULL;

    while (!feof(fp) &&  ( (rtnval=fgetc(fp) ) != '\n')  ) 
    {
		
	   if ( rtnval == EOF ) 
      { 
         break; 
      } 
      else 
      { 
         tmpLine[i] = rtnval; 
      } 

		if(rtnval == '[')
		{
			flag =1;
			tmpS =&tmpLine[i];
		}
		if(flag==1 && tmpLine[i]=='/' && tmpLine[i-1]=='[')
		{
			flag = 2; 
			tmpS =&tmpLine[i];
		}
		if(flag  &&  rtnval == ']')
		{
			tmpE =&tmpLine[i];
		}
		i++;
	}
	tmpS++;
	tmpLine[i]='\0';

	printf("%s\n",tmpLine);

	ptreenode = (struct tree_node *)malloc(sizeof(struct tree_node));

	switch (flag)
	{
	case 0:  // 葉子節點
		{
			*tp = m_leaf;
			p =strchr(tmpLine,'=');
			
			char  *p1 = tmpLine;
			while(*p1 ==' ') p1++;
			
			strncpy(ptreenode->data,p1,p-p1);
			ptreenode->data[p-p1] = '\0';
			
			strncpy(ptreenode->value,p+1,strlen(tmpLine)-(p-1-tmpLine));
			
			ptreenode->value[strlen(tmpLine)-(p-1-tmpLine) ]  = '\0';
			
			
			ptreenode->flag = 0;
			ptreenode->firstchild = NULL;
			ptreenode->nextsibling = NULL;
		}
		break;
	case 1:   //中間節點開始
		*tp = m_bran0;
		strncpy(ptreenode->data,tmpS,tmpE-tmpS);
		ptreenode->data[tmpE-tmpS] = '\0';
		ptreenode->flag = 1;
		ptreenode->firstchild = NULL;
		ptreenode->nextsibling = NULL;

		break;
	case 2:  //中間節點結束

		*tp = m_bran1;
		strncpy(ptreenode->data,tmpS,tmpE-tmpS);
		ptreenode->data[tmpE-tmpS] = '\0';
		ptreenode->flag = 1;
		ptreenode->firstchild = NULL;
		ptreenode->nextsibling = NULL;

		break;

	}
	
     return (ptreenode);
 
}




void insertnode_byparent(struct tree_node *root, struct tree_node *defaultnode)
{
	//  還沒有寫函數體 請補充完整

}

/*      load_envvar(&defaultnode);
        load_cfgndvar(&defaultnode, cfg_filepath);
        load_taskdvar(&defaultnode, task_filepath);
        load_cmdvar(&defaultnode, argv);
*/

//    char path2[]= "1:7:9";                        /* 結點 2 的路徑      */

#define MAX_PATH_LEN 100

/*
void get_node(struct tree_node *root,const char *path, struct tree_node **subroot)
{
	//  還沒有寫函數體 請補充完整
	int lastpathflag = 0;
	char pathcpy[MAX_PATH_LEN];
    char pathpart[MAX_PATH_LEN];
	char pathremain[MAX_PATH_LEN];
	

	if(root==NULL)
	{
		subroot=NULL;
		return;
	}
	
	if(root->flag == -1) //根節點
	{
		if(root->firstchild)
			root = root->firstchild;
	}

	if(path==NULL )
	{
		subroot=NULL;
		return ;
	}

	strcpy(pathcpy,path);
	strcpy(pathpart,path);
	char  *pPos=strchr(pathcpy,':');
	if(pPos != NULL)
	{
		strncpy(pathpart,pathcpy,pPos-pathcpy);
		pathpart[pPos-pathcpy]='\0';

		strcpy(pathremain,pPos+1);
		
		printf("zong路徑=%s \n",path);
		printf("pre路徑=%s \n",pathpart);
		printf("remain路徑=%s \n",pathremain);

	}
	else // pPos =NULL
	{
		lastpathflag = 1;
	}
	
	if (lastpathflag)
	{
		if( strcmp(root->data,pathpart) == 0 )
		{
			subroot = &root;
			return ;
		}
		else  
		{
			struct tree_node *sibling = root->nextsibling;
			while(sibling != NULL)
			{
				if( strcmp(sibling->data,pathpart) == 0) 
				{
					subroot = &sibling;
					return;
				}
				sibling = sibling->nextsibling;
			}
		}

	}
	else  //沒有到最后層
	{
		if(  strcmp(root->data,pathpart) == 0 )
		{
			struct tree_node *child = root->firstchild;
			if(child != NULL)
			{
				get_node(child,pathremain,subroot);
				if(subroot != NULL)
					return;
			}
			
		}
		else
		{
			struct tree_node *sibling = root->nextsibling;
			while(sibling != NULL)
			{
				if(strcmp(sibling->data,pathpart) == 0)
				{
					if(sibling->firstchild)
					{
						get_node(sibling->firstchild,pathremain,subroot);
						if(subroot != NULL) return;
					}
				}
				
				sibling = sibling->nextsibling;
			}
		}

	}





}

*/

struct tree_node *get_node(struct tree_node *root,const char *path)
{
	//  還沒有寫函數體 請補充完整
	int lastpathflag = 0;
	char pathcpy[MAX_PATH_LEN];
    char pathpart[MAX_PATH_LEN];
	char pathremain[MAX_PATH_LEN];
	static struct tree_node  *subroot=NULL;

	if(root==NULL)
	{
		subroot = NULL;
		return subroot;
	}
	
	if(root->flag == -1) //根節點
	{
		if(root->firstchild)
			root = root->firstchild;
	}

	if(path==NULL )
	{
		subroot=NULL;
		return subroot;
	}

	strcpy(pathcpy,path);
	strcpy(pathpart,path);
	char  *pPos=strchr(pathcpy,':');
	if(pPos != NULL)
	{
		strncpy(pathpart,pathcpy,pPos-pathcpy);
		pathpart[pPos-pathcpy]='\0';

		strcpy(pathremain,pPos+1);
		
		//printf("zong路徑=%s \n",path);
		//printf("pre路徑=%s \n",pathpart);
		//printf("remain路徑=%s \n",pathremain);

	}
	else // pPos =NULL
	{
		lastpathflag = 1;
	}
	
	if (lastpathflag)
	{
		if( strcmp(root->data,pathpart) == 0 )
		{
			subroot = root;
			return subroot;
		}
		else  
		{
			struct tree_node *sibling = root->nextsibling;
			while(sibling != NULL)
			{
				if( strcmp(sibling->data,pathpart) == 0) 
				{
					subroot = sibling;
					return subroot;
				}
				sibling = sibling->nextsibling;
			}
		}

	}
	else  //沒有到最后層
	{
		if(  strcmp(root->data,pathpart) == 0 )
		{
			struct tree_node *child = root->firstchild;
			if(child != NULL)
			{
				if( get_node(child,pathremain) ) 
					return subroot;
			}
			
		}
		else
		{
			struct tree_node *sibling = root->nextsibling;
			while(sibling != NULL)
			{
				if(strcmp(sibling->data,pathpart) == 0)
				{
					if(sibling->firstchild)
					{
						if( get_node(sibling->firstchild,pathremain) )
							return subroot;
					}
				}
				
				sibling = sibling->nextsibling;
			}
		}

	}
	return subroot;

}




void recursion_dump(struct tree_node *node,FILE *fp) 
{
	//  還沒有寫函數體 請補充完整


}

void trim(char *parentpath)
{



}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中国av一区二区三区| 国产成人精品网址| 国产一区二区三区最好精华液| www.亚洲色图| 欧美一区二区三区视频在线| 亚洲欧洲日产国码二区| 蜜桃精品在线观看| 欧美三级三级三级爽爽爽| 国产日韩欧美麻豆| 久久国产精品一区二区| 欧美日韩在线播放三区| 亚洲日本韩国一区| 成人黄色av网站在线| 精品人伦一区二区色婷婷| 亚洲va韩国va欧美va| 91在线视频官网| 亚洲国产精品成人久久综合一区| 久久爱www久久做| 91精品国产色综合久久久蜜香臀| 一区二区久久久| 91在线视频播放| 亚洲欧洲日产国码二区| 成人网页在线观看| 久久九九久久九九| 国产精品中文字幕日韩精品 | 日本一区二区成人| 蜜桃视频免费观看一区| 91精品国产麻豆国产自产在线| 亚洲亚洲人成综合网络| 欧美日韩日日骚| 亚洲一区在线观看免费观看电影高清| 色诱亚洲精品久久久久久| 亚洲欧美视频一区| 91黄色激情网站| 亚洲一区二区高清| 欧美乱妇一区二区三区不卡视频| 亚洲综合图片区| 这里是久久伊人| 麻豆免费精品视频| 久久久久久一二三区| 国产sm精品调教视频网站| 国产精品美女久久久久aⅴ | 欧美不卡在线视频| 国内精品久久久久影院色| 久久久精品免费观看| 成人av电影观看| 亚洲精品中文在线| 欧美日韩不卡在线| 久久超碰97中文字幕| 久久免费视频一区| 豆国产96在线|亚洲| 一区二区三区四区精品在线视频| 欧美午夜一区二区三区 | 日韩久久久久久| 国产精品一区二区果冻传媒| 国产精品久久久久久久久果冻传媒| 99精品热视频| 天堂成人免费av电影一区| 欧美电视剧免费全集观看| 成人av在线播放网站| 亚洲成人三级小说| www精品美女久久久tv| 色乱码一区二区三区88| 免费成人你懂的| 中文字幕一区二区视频| 欧美久久久影院| 春色校园综合激情亚洲| 亚洲成人av电影| 日本一区二区久久| 91精品国产综合久久久蜜臀粉嫩| 国产精品一区一区三区| 一区二区高清在线| 亚洲国产经典视频| 欧美日韩国产成人在线91| 国产精品一品二品| 日韩成人一级大片| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 欧美日本一区二区在线观看| 国产美女一区二区三区| 亚洲福利电影网| 国产清纯白嫩初高生在线观看91| 欧美性猛交xxxxxx富婆| 国产+成+人+亚洲欧洲自线| 午夜精品福利一区二区蜜股av| 久久免费偷拍视频| 日韩一区二区三区三四区视频在线观看 | 成人福利电影精品一区二区在线观看| 亚洲v精品v日韩v欧美v专区| 亚洲欧洲av在线| 久久影院视频免费| 91精品国产色综合久久不卡电影 | 国产在线视视频有精品| 亚洲一区日韩精品中文字幕| 国产精品国产精品国产专区不蜜| 日韩欧美国产wwwww| 欧美天堂亚洲电影院在线播放| 国产sm精品调教视频网站| 久久精品av麻豆的观看方式| 五月天亚洲婷婷| 亚洲综合色噜噜狠狠| 日韩毛片精品高清免费| 中文字幕精品在线不卡| 国产女同互慰高潮91漫画| 精品国产99国产精品| 91精品福利在线一区二区三区| 在线观看视频一区二区欧美日韩| 成人a区在线观看| 日韩三级伦理片妻子的秘密按摩| 青青国产91久久久久久| 亚洲一区影音先锋| 亚洲裸体xxx| 亚洲欧洲精品天堂一级 | 日韩视频免费直播| 色av一区二区| 99re8在线精品视频免费播放| 国产成人精品影视| 国产精品99久久久久久久女警 | 欧美性淫爽ww久久久久无| 91免费版在线| 欧美亚洲日本国产| 欧美日韩另类国产亚洲欧美一级| 欧美日韩成人高清| 欧美丰满高潮xxxx喷水动漫| 91精品啪在线观看国产60岁| 91精品福利在线一区二区三区 | 91麻豆免费在线观看| 色琪琪一区二区三区亚洲区| 色婷婷av一区| 欧美电影影音先锋| 日韩欧美亚洲国产另类| 久久婷婷色综合| 亚洲国产精品99久久久久久久久| |精品福利一区二区三区| 一区二区在线看| 日韩高清在线不卡| 黄网站免费久久| 成人黄色小视频| 欧美性生交片4| 欧美成人免费网站| 国产精品久久久久久亚洲伦| 亚洲精品视频在线| 老司机免费视频一区二区三区| 国产一区视频在线看| 99国产精品久| 91麻豆精品国产自产在线 | 成人美女视频在线看| 日本韩国一区二区| 欧美一区在线视频| 国产精品久久午夜夜伦鲁鲁| 婷婷综合另类小说色区| 国产一区二区毛片| 欧美影院一区二区三区| 精品国产污污免费网站入口 | 一区二区三区四区在线免费观看| 亚洲大型综合色站| 国产精品自拍av| 欧美色涩在线第一页| 亚洲精品一区二区三区蜜桃下载| 亚洲欧美激情视频在线观看一区二区三区 | 亚洲精品免费播放| 免费不卡在线视频| 91视频在线看| 精品人在线二区三区| 一区二区免费在线| 国产成人综合在线观看| 欧美日韩精品久久久| 亚洲欧洲精品一区二区三区 | 日韩av一区二区三区四区| 99精品在线观看视频| 久久久国产综合精品女国产盗摄| 亚洲成年人网站在线观看| www.欧美日韩| 久久一区二区三区四区| 日韩精品乱码av一区二区| 92国产精品观看| 国产无人区一区二区三区| 美女一区二区久久| 欧美日韩国产欧美日美国产精品| 中文字幕亚洲欧美在线不卡| 国产乱人伦偷精品视频不卡| 91精品国产高清一区二区三区| 亚洲欧美激情小说另类| 成人精品免费视频| xfplay精品久久| 久久99精品国产91久久来源| 欧美精品aⅴ在线视频| 亚洲男人天堂av网| 99r国产精品| 国产精品久久久久久久久免费相片| 国产自产2019最新不卡| 精品蜜桃在线看| 老司机精品视频一区二区三区| 777欧美精品| 丝袜美腿成人在线| 欧美精品1区2区3区| 日本视频中文字幕一区二区三区| 51精品视频一区二区三区| 午夜精品福利在线| 这里是久久伊人| 看电影不卡的网站|