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

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

?? documentm.cpp

?? 模擬文件管理系統(tǒng)
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
#include <stdio.h>
#include <iostream.h>
#include <string.h>
#include <ctype.h>
#include <malloc.h>
#define FILENAME_LEN 21
#define INPUT_LEN 81
#define COMMAND_LEN 11

//結(jié)點(diǎn)結(jié)構(gòu)
struct FileNode 
{
	char filename[FILENAME_LEN];//文件名/目錄名
	int isdir;//目錄文件識別標(biāo)志
	int i_nlink;//文件的鏈接數(shù)
	int adr;//文件的地址
	struct FileNode *parent, *child;//指向父親的指針和指向左孩子的指針
	struct FileNode *sibling_prev, *sibling_next;//指向前一個(gè)兄弟的指針和指向
//后一個(gè)兄弟的指針.
};


void Init();//初始化文件樹
int ParseCommand();//接受輸入的命令并把其分解成操作名和路徑文件名
void ExecuteCommand();//執(zhí)行命令

int cdComd();//處理cd命令
int editComd();//處理edit命令
int delComd();//處理del命令
int rdComd();//處理rd命令
int dirComd();//處理dir命令
int mdComd();//處理md命令

int FindPath(char *ph);//尋找參數(shù)ph所指向的路徑
//從參數(shù)Para2中找到要建立或刪除的文件、目錄名,并把指針指向其父親結(jié)點(diǎn)
int FindFilename(char Para2[]);


struct FileNode* CreateFileNode(char filename[],int isdir,int i_nlink);//創(chuàng)建結(jié)點(diǎn)
int GetInput(char* buffer,unsigned int buffer_len);//獲取輸入
int CheckCommand();//命令檢查
int GetDir(int begin,char* path,char* curDir);//獲取路徑
void Trim(char* str);

struct FileNode * cp, *tp, *root,*upper;
char path[INPUT_LEN-COMMAND_LEN];//記錄當(dāng)前走過的路徑
char curpath[INPUT_LEN-COMMAND_LEN],Para1[COMMAND_LEN],
	    Para2[INPUT_LEN-COMMAND_LEN],tmppath[INPUT_LEN-COMMAND_LEN];
char filename[FILENAME_LEN],dirname[FILENAME_LEN],tmp;
int i,j;

//主函數(shù)
int main()
{
	Init();//初始化文件樹
	while(1)
	{
		if(ParseCommand())//分解命令
			ExecuteCommand();//執(zhí)行命令
	}
}

//執(zhí)行命令子函數(shù)
void ExecuteCommand()
{
	int sign;
            //根據(jù)參數(shù)Para1調(diào)用相應(yīng)的功能處理模塊
	if(strcmp(Para1,"cd")==0) 
		sign=cdComd();            //cd命令
	else if(strcmp(Para1,"edit")==0) 
		sign=editComd();         //edit命令
	else if(strcmp(Para1,"del")==0) 
		sign=delComd();          //del命令
	else if(strcmp(Para1,"dir")==0) 
		sign=dirComd();          //dir命令
	else if(strcmp(Para1,"md")==0) 
		sign=mdComd();         //md命令
	else if(strcmp(Para1,"rd")==0) 
		sign=rdComd();           //rd命令
	else if(strcmp(Para1,"exit")==0)
		exit(0);                         //exit命令
	else
		printf("命令錯誤,請重試\n");  //命令輸入不正確,報(bào)錯
}

//創(chuàng)建結(jié)點(diǎn)
struct FileNode* CreateFileNode(char filename[],int isdir,int i_nlink)
{
	//申請結(jié)點(diǎn)空間
    struct FileNode* node=(struct FileNode*)malloc(sizeof(struct FileNode));
	//相應(yīng)內(nèi)容賦初值
    strcpy(node->filename,filename);
	node->isdir=isdir;
	node->i_nlink=i_nlink;
	node->parent=NULL;
	node->child=NULL;
	node->sibling_prev=NULL;
	node->sibling_next=NULL;
    return node;
}

//初始化文件樹
void Init()
{
	struct FileNode *bin,*usr,*unix,*etc;
	strcpy(path,"/");          //根目錄為當(dāng)前目錄

////////////////////////////////////////////////////////////////////////
/////////////////////創(chuàng)建初始目錄結(jié)點(diǎn)///////////////////////////////////
	bin = CreateFileNode("bin",1,0);
	usr = CreateFileNode("usr",1,0);
	unix = CreateFileNode("unix",0,0);
	etc = CreateFileNode("etc",1,0);
	root = cp = tp = CreateFileNode("/",1,0);
////////////////////////////////////////////////////////////////////////
/////////////////////創(chuàng)建初始目錄結(jié)點(diǎn)結(jié)束///////////////////////////////
	
////////////////////////////////////////////////////////////////////////
/////////////////////初始目錄賦值///////////////////////////////////////
	root -> parent = NULL;
	root -> child = bin;
	root -> sibling_prev = root -> sibling_next = NULL;
 
	bin -> parent = root;
	bin -> child = NULL;
	bin -> sibling_prev = NULL;
	bin -> sibling_next = usr;

	usr -> parent = NULL;
	usr -> child = NULL;
	usr -> sibling_prev  =bin;
	usr -> sibling_next = unix;

	unix -> parent = NULL;
	unix -> child = NULL;
	unix -> sibling_prev = usr;
	unix -> sibling_next = etc;

	etc -> parent = NULL;
	etc -> child = NULL;
	etc -> sibling_prev = unix;
	etc -> sibling_next = NULL;
////////////////////////////////////////////////////////////////////////
/////////////////////初始目錄結(jié)點(diǎn)賦值結(jié)束///////////////////////////////
	printf("***********************************************************************\n");
	printf("***********************************************************************\n");
	printf("***********************歡迎來到模擬文件管理系統(tǒng)************************\n");
	printf("***********************  信息安全0601班:吳建海*************************\n");
	printf("***********************************************************************\n");
	printf("你可以輸入如下命令進(jìn)行操作:\n");
	printf("cd:類似dos的cd命令\n");
	printf("edit:創(chuàng)建文件\n");
	printf("del: 刪除文件\n");
	printf("rd:刪除目錄\n");
	printf("dir:顯示目錄\n");
	printf("md:創(chuàng)建目錄\n");

}

//獲取文件或目錄名,并把指針指向其父親結(jié)點(diǎn)
int FindFilename(char Para2[])
{
	i=strlen(Para2)-1;
	j=0;
	
	while(Para2[i]!='/'&& i>=0)
	{	
		filename[j]=Para2[i];
		i--; j++;
	}
	filename[j]='\0';//獲得逆序的文件或目錄名,存入filename中
	if(i<0) Para2[i+1]='\0';
	else Para2[i]='\0';
	j--;
            //filename逆轉(zhuǎn),獲得正確的文件或目錄名
	for(i=0;i<strlen(filename)/2;i++,j--)
	{
		tmp=filename[i];
		filename[i]=filename[j];
		filename[j]=tmp;
	}

	//查找路徑
	if(strlen(Para2)>0)
	{
		int sign=FindPath(Para2);
		if(sign==0) return 0;
	}
	return 1;
}

//緩沖區(qū)安全輸入子函數(shù)
//如果輸入超過buffer_len,則截取前buffer_len-1長度的輸入,
//buffer_len處字符用'/0'代替
int GetInput(char* buffer,unsigned int buffer_len)
{
	int count=0;
	while(count<buffer_len)
	{
		if((buffer[count]=getchar())==10)
		{
			buffer[count]='\0';
			return count;
		}
		count++;
	}
	while(getchar()!=10);
	buffer[buffer_len-1]='\0';
	return -1;
}	

//分解命令子函數(shù)
int ParseCommand()
{
	char Inputs[INPUT_LEN];
	int i=0,j=0,k=0,ch;
	
	printf("%s>",path);
            //獲取輸入
	if(GetInput(Inputs,INPUT_LEN)==-1)
	{
		printf("輸入行太長。\n");
		return 0;
	}
	
	Para1[0]=Para2[0]='\0';
   
	//獲取參數(shù)Para1,即操作名
while(Inputs[i]!=' ' && Inputs[i]!='\0' && i<COMMAND_LEN-1)
	{   
		Para1[i]=Inputs[i];
		i++;
	}//while
	Para1[i]='\0';
	
	//輸入命令太長
	if(i==(COMMAND_LEN-1))return 1;

	//獲取參數(shù)2,即路徑文件名
if(Inputs[i]!='\0')
	{    
		while(Inputs[i]==' ' && i<INPUT_LEN-1) i++;
		j=0;
		while(Inputs[i]!='\0'  && i<INPUT_LEN-1)
		{  
			Para2[j]=Inputs[i];
			i++; j++;
		}
		Para2[j]='\0';
	}
	Trim(Para1);
	Trim(Para2);

	//將操作名全部轉(zhuǎn)換成小寫字母
	for(k=0;k<strlen(Para1);k++)
	{
		ch=tolower((int)Para1[k]);
		Para1[k]=ch;
	}
	return 1;
}

//cd功能處理子函數(shù)
int cdComd()
{
	if(!CheckCommand())//命令檢查
		return 0;
   
	if(strcmp(Para2,"..")==0)
	{          //對cd ..命令的處理
		int i;
	
		while(cp->sibling_prev)
			cp=cp->sibling_prev;//找到這一層最左邊的結(jié)點(diǎn)
		if(cp->parent)
		{
			cp=cp->parent;//找到父親結(jié)點(diǎn)
		}
		else
		{
		    return 0;
		}
		//對當(dāng)前路徑進(jìn)行相應(yīng)處理
i=strlen(path);
		while(path[i]!='/'&& i>0) i--;
		
		if(i!=0)
			path[i]='\0';
		else
			path[i+1]='\0';
	
	}
	else
	{
		FindPath(Para2);//查找路徑
	}
	return 1;
}

//命令格式處理子函數(shù)
void Trim(char* str)
{
	int begin,end;
	char* tmp;
	begin=0;
	end=strlen(str);

	//找到字符串第一個(gè)非空格的位置
	while(str[begin]==' ' && str[begin]!='\0')begin++;
	//去除字符串尾部空格
	while(str[--end]==' ');
	str[end+1]='\0';
	
	//除去空格
	if(begin<end)
	{
		tmp=(char*)malloc((sizeof(char))*(end-begin+2));
		strcpy(tmp,&str[begin]);
		strcpy(str,tmp);
		free(tmp);
	}
	
}

//獲取當(dāng)前目錄名子函數(shù)
int GetDir(int begin,char* path,char* curDir)
{
	int i=0;
	int len=strlen(path);
	while(!((path[begin]=='\\' )|| (path[begin]=='/'))&&begin<len)
	{
		curDir[i++]=path[begin++];
	}
	curDir[i]='\0';
	Trim(curDir);
	return begin+1;
}

//查找路徑子函數(shù)
int FindPath(char *ph) 
{
	struct FileNode *tp,*temp;
	char oldpath[INPUT_LEN-COMMAND_LEN];
	int i=0;
	int sign=1;
	if(strcmp(ph,"/")==0)
	{          //ph是根目錄
		cp=root;
		strcpy(path,"/");
		return 1;
	}

	temp=cp;
	strcpy(oldpath,path);//保存原路徑和指針
	if(ph[0]=='/')
	{          //指針指向根目錄的左孩子
		cp=root->child;
		i++;//濾過'/'
		strcpy(path,"/");
	}
	else 
	{
		if(cp!=NULL && cp!=root )
			strcat(path,"/");

		if(cp && cp->child)
		{
			if(cp->isdir)
				cp=cp->child; //指針指向當(dāng)前目錄的左孩子
			else
			{
				printf("路徑錯誤!\n");
				return 0;
			}
		}
	}
	while(i<=strlen(ph)&& cp)//繼續(xù)查找指定路徑,如遇到文件則報(bào)錯
	{
		int j=0;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
奇米精品一区二区三区在线观看 | 久久久影视传媒| 91在线高清观看| 国产高清精品在线| 风流少妇一区二区| 成人小视频免费观看| 国产精品99久久久久久有的能看| 久久超碰97人人做人人爱| 免费观看91视频大全| 久久精品二区亚洲w码| 美腿丝袜亚洲三区| 激情都市一区二区| 国产乱对白刺激视频不卡| 国产成人99久久亚洲综合精品| 国产成人午夜片在线观看高清观看| 国产乱码精品一区二区三区忘忧草 | 精品视频色一区| 91福利在线看| 欧美久久久久久蜜桃| 欧美精品aⅴ在线视频| 日韩欧美国产高清| 日本一区二区三区四区| 亚洲精品少妇30p| 日韩高清不卡一区二区三区| 久久99精品久久久久久动态图 | 水蜜桃久久夜色精品一区的特点| av不卡一区二区三区| 欧美国产精品劲爆| 国产精品久久久久桃色tv| 亚洲女与黑人做爰| 日韩福利电影在线| 国产精品亚洲午夜一区二区三区| 99久久er热在这里只有精品66| 在线亚洲一区二区| 精品伦理精品一区| 亚洲精品国产视频| 麻豆精品一区二区| 91丨porny丨最新| 日韩视频一区在线观看| 中文字幕永久在线不卡| 日韩高清在线电影| 99麻豆久久久国产精品免费优播| 欧美性感一区二区三区| 欧美激情一区不卡| 奇米777欧美一区二区| av综合在线播放| 日韩精品一区二区三区四区| 亚洲蜜臀av乱码久久精品蜜桃| 蜜臀av性久久久久av蜜臀妖精| 波多野结衣视频一区| 欧美精品一区在线观看| 亚洲国产精品久久艾草纯爱| 丰满放荡岳乱妇91ww| 欧美成人欧美edvon| 午夜精品久久久久久久久久| av不卡一区二区三区| 国产肉丝袜一区二区| 精品午夜一区二区三区在线观看| 精品污污网站免费看| 亚洲免费看黄网站| 99久久精品国产观看| 欧美激情在线观看视频免费| 久久爱www久久做| 日韩三级在线免费观看| 天天影视网天天综合色在线播放| 在线视频中文字幕一区二区| 日韩一区在线看| 99久久精品国产精品久久| 国产精品水嫩水嫩| 成人性生交大合| 国产精品久久久久久久久免费相片 | 极品美女销魂一区二区三区免费| 欧美日本在线看| 丝袜亚洲另类欧美综合| 欧美一区午夜视频在线观看| 婷婷一区二区三区| 欧美一区二区视频观看视频| 日韩和的一区二区| 欧美大胆人体bbbb| 国产精品影视在线观看| 136国产福利精品导航| 日本一区二区三区四区在线视频| 久久99精品久久只有精品| 日韩欧美中文字幕一区| 精品亚洲国内自在自线福利| www国产成人| 国产69精品久久777的优势| 国产精品久久久久影院| 91在线精品一区二区| 亚洲一区在线观看免费观看电影高清| 欧美三级视频在线| 免费成人在线影院| 欧美国产精品中文字幕| 91国产成人在线| 免费欧美在线视频| 日本一区二区三区久久久久久久久不| 99视频一区二区| 婷婷国产在线综合| 国产婷婷一区二区| 亚洲成人av电影| 日韩精品专区在线影院重磅| 国产99精品国产| 国产精品三级在线观看| 色妞www精品视频| 亚洲永久精品大片| 日韩欧美一区电影| 成人国产在线观看| 亚洲一区二区偷拍精品| 日韩亚洲欧美成人一区| 国产91精品欧美| 亚洲国产一二三| 国产日韩精品一区| 欧美午夜免费电影| 国产精品77777| 五月婷婷久久综合| 日韩一区欧美小说| 欧美不卡一区二区三区| 一本色道久久综合亚洲aⅴ蜜桃| 日韩综合一区二区| 国产精品电影一区二区| 欧美一区二区在线视频| 成人精品一区二区三区中文字幕| 亚洲香蕉伊在人在线观| 国产欧美日韩综合精品一区二区| 欧美视频在线一区| 不卡的av网站| 六月丁香综合在线视频| 亚洲主播在线观看| 国产精品视频观看| 精品国产91亚洲一区二区三区婷婷 | 亚洲日本va在线观看| 久久久久久99精品| 91蜜桃网址入口| 国产精品亚洲第一| 紧缚捆绑精品一区二区| 日韩精彩视频在线观看| 亚洲一区二区三区影院| 综合色中文字幕| 国产精品久线观看视频| 欧美精品一区二区三区四区| 91精品国产综合久久久久久漫画| 在线日韩av片| 制服.丝袜.亚洲.中文.综合| 欧美亚洲综合色| 色综合天天综合给合国产| 成人黄色777网| 成人国产精品视频| 成人av电影在线网| eeuss国产一区二区三区| 成人久久18免费网站麻豆 | 中文字幕一区二区三区四区不卡| 久久人人爽人人爽| 国产欧美一区二区精品忘忧草| 精品sm捆绑视频| 成人欧美一区二区三区| 国产不卡在线播放| 九色综合国产一区二区三区| 美腿丝袜在线亚洲一区| 青娱乐精品视频在线| 蜜臀精品一区二区三区在线观看 | 欧美三级欧美一级| 欧美精品黑人性xxxx| 777午夜精品视频在线播放| 欧美电视剧免费观看| 精品成a人在线观看| 国产精品区一区二区三| 亚洲免费在线观看视频| 午夜精品久久久久久久蜜桃app | 2021中文字幕一区亚洲| 26uuu色噜噜精品一区二区| 国产日韩v精品一区二区| 中文字幕亚洲欧美在线不卡| 一区二区在线观看免费视频播放| 亚洲国产一区二区三区| 狂野欧美性猛交blacked| 国产成人aaa| 欧美亚洲一区二区在线| 精品日韩欧美一区二区| 国产精品美女一区二区三区| 一区二区三区在线免费视频| 首页国产欧美日韩丝袜| 国产精品 欧美精品| 91社区在线播放| 日韩欧美另类在线| 国产精品久久久久久户外露出| 亚洲国产裸拍裸体视频在线观看乱了| 日韩国产成人精品| www.激情成人| 日韩欧美亚洲另类制服综合在线| 国产精品对白交换视频 | 国产精品一区二区在线观看网站| 国产成人在线网站| 欧美日韩三级一区| 国产精品午夜春色av| 日本视频中文字幕一区二区三区| 成人性视频网站| 欧美一区二区三区小说| 亚洲欧洲综合另类在线| 国产精品一区二区视频| 6080日韩午夜伦伦午夜伦|