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

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

?? os.cpp

?? 模擬文件系統
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
	printf("成功創建文件!\n\n");
	printf("===========================================\n");
	printf("文件名    長度    最大長度   類型  開始位置\n");//顯示剛建立的文件
	printf("%s     ",temp.fileName);
	printf("%d       ",temp.length);
	printf("%d      ",temp.maxLength);
	printf("%s    ",temp.fileKind);
	printf("%d    ",temp.start);
	printf("\n===========================================\n");
	printf("create進程打開了文件%s,關閉請用close命令!\n\n",fileName);
	//寫到打開文件表
	strcpy(OFT[OFT_count].fileName,temp.fileName);
	strcpy(OFT[OFT_count].fileKind,temp.fileKind);
	OFT[OFT_count].length=temp.length;
	OFT[OFT_count].maxLength=temp.maxLength;
	OFT[OFT_count].start=temp.start;
	OFT[OFT_count].openCount=1;
	OFT[OFT_count].timeinfo=temp.timeinfo;
	OFT_count++;                    //打開表 記錄的是文件數 
	//printf("count%d",OFT_count);

}
void fileDel(char *fileName)
{
	int i;
	int flag=0;    
	int k=0;       //記錄文件在 文件表中的位置
	SLNode *p;    //磁盤空間分配表 指針
	SeqDataType x; //存儲被刪除的結點,無特殊意義
	for(i=0;i<OFT_count;i++) //判斷是否被別的進程占用,若被占用,打印出錯,直接返回
	   if(!strcmp(fileName,OFT[i].fileName))
		{
			printf("別的進程占用文件!無法刪除!");
			return ;
		}
	for(i=0;i<L.size;i++)//從文件表里查找到要刪除的文件,若查找不到,直接返回
	{
		if(!strcmp(fileName,L.list[i].fileName))
		{
			flag=1;
			k=i;
			break;
		}
	}
	if(flag==0)
	{
		printf("無此文件!");
		return ;
	}
	if(flag==1)//查找到文件后,把磁盤空間置為空閑,之后從文件表中刪除
	{
		for(p=freeDiskTableHead;p->next!=NULL;p=p->next)
		{
			if(p->next->data.start==L.list[k].start)
			{
				p->next->data.useFlag=0;
				printf("成功刪除!\n");
				break;
			}
		}
		SeqListDelete(&L,k,&x);//從文件表中刪除
	}
}
void fileRead(char *fileName,int position,int length)
{
	int i;
	int flag=0;
	int k=0;
	for(i=0;i<OFT_count;i++)   //查找文件打開表,如果存在,則不需要再查找文件表
	{
		if(!strcmp(fileName,OFT[i].fileName))
		{
			k=i;
			flag=1;
			OFT[i].openCount++;//多個進程打開,計算器加1
			break;
		}
	}
	if(flag!=1) //文件不在打開表,找到它,并寫到打開表最后
	{
		for(i=0;i<L.size;i++)
		{
			if(!strcmp(fileName,L.list[i].fileName)) //找到文件,寫到文件打開表
			{
				strcpy(OFT[OFT_count].fileName,L.list[i].fileName);
				strcpy(OFT[OFT_count].fileKind,L.list[i].fileKind);
				OFT[OFT_count].length=L.list[i].length;
				OFT[OFT_count].maxLength=L.list[i].maxLength;
				OFT[OFT_count].start=L.list[i].start;
				OFT[OFT_count].timeinfo=L.list[i].timeinfo;
				OFT[OFT_count].openCount++;
				k=OFT_count;
				//OFT_count=1;//初次打開,賦值為1
				flag=1; //標志在打開文件表里
			}
		}
	}
	if(flag==1)
	{
		if(position<0||position+length>OFT[k].length)
		{
			printf("讀取參數錯誤,請檢查參數!\n");
			return ;
		}
		for(i=0;i<length;i++)
			printf("%c",disk[OFT[k].start+position+i-1]); //讀取內容
		printf("\nread進程打開了文件%s,關閉請用close命令!\n\n",fileName);
	}

}
void fileWrite(char *fileName,int position,char *s)//找到文件,寫到打開表,根據打開表操作
{
	int i=0;
	int len=0; //計算寫入字串長度,跟原來長度相加,如果超過最大長度,就失敗
	int k=0;   //如果在 打開表里打到記錄,則記錄位置
	int flag=0; //如果flag=1,說明在打開表里找到了,不用在文件表里找了
	len=strlen(s);
	for(i=0;i<OFT_count;i++)
	{
		if(!strcmp(fileName,OFT[i].fileName))
		{
			k=i;
			flag=1;
			OFT[i].openCount++;//多個進程打開,計算器加1
			break;
		}
	}
	if(flag!=1) //文件不在打開表,找到它,并寫到打開表最后
	{
		for(i=0;i<L.size;i++)
		{
			if(!strcmp(fileName,L.list[i].fileName)) //找到文件,寫到文件打開表的最后
			{
				strcpy(OFT[OFT_count].fileName,L.list[i].fileName);
				strcpy(OFT[OFT_count].fileKind,L.list[i].fileKind);
				OFT[OFT_count].length=L.list[i].length;
				OFT[OFT_count].maxLength=L.list[i].maxLength;
				OFT[OFT_count].start=L.list[i].start;
				OFT[OFT_count].timeinfo=L.list[i].timeinfo;
				OFT[OFT_count].openCount++;
				k=OFT_count;                  //記錄在文件打開表中的位置
				flag=1; //標志在打開文件表里
				
			}
		}
	}
	if(1==flag)  //如果在打開表里 找到文件,則不用再找文件表
	{
		if(OFT[k].length+len>OFT[k].maxLength)
		{
			printf("超過文件最大長度,寫入失敗!\n");
			return ;
		}
		else if(position<0||position>OFT[k].length)
		{
			printf("插入位置非法!請檢查參數\n");
			return ;
		}
		else
		{
			int j=0;
			for(i=OFT[k].length-1;i>=OFT[k].start+position;i--)
			disk[i+len]=disk[i];  //給插入的字符串 空出位置
			for(i=OFT[k].start+position;i<OFT[k].start+position+len;i++,j++)
			disk[i]=s[j];       //寫進磁盤
			for(i=0;i<L.size;i++)     //改變文件長度
			{
				if(!strcmp(fileName,L.list[i].fileName))
				{
					L.list[i].length=L.list[i].length+len;  //設置文件長度
					break;
				}
			}
            OFT[k].length=OFT[k].length+len;   //同時更新打開文件表中文件的長度
			printf("成功寫入!\n");
			printf("write進程打開了文件%s,關閉請用close命令!\n\n",fileName);
		}
	}
	else
	printf("無此文件,請輸入正確的文件名!");
}
void fileAsk(char *fileName)
{
	int i;
	int flag=0;
	for(i=0;i<OFT_count;i++)    //如果在打開表里 找到文件,則不用再找文件表
	{
		if(!strcmp(fileName,OFT[i].fileName))
		{
			printf("文件名:%s\n",OFT[i].fileName);
			printf("類型:%s\n",OFT[i].fileKind);
			printf("長度:%d\n",OFT[i].length);
			printf("打開進程數:%d\n",OFT[i].openCount);
			printf("創建時間:%s\n",asctime(OFT[i].timeinfo));
			flag=1;
			break;
		}
	}
	if(flag!=1)
	{
		for(i=0;i<L.size;i++)  //從文件表里查找文件
		{
			if(!strcmp(fileName,L.list[i].fileName))
			{
				printf("文件名:%s\n",L.list[i].fileName);
				printf("類型:%s\n",L.list[i].fileKind);
				printf("長度:%d\n",L.list[i].length);
				printf("創建時間:%s\n",asctime(L.list[i].timeinfo));
				flag=1;
				break;
			}

		}
	}
	if(flag==0)
	printf("無此文件!\n");
}
void fileType(char *fileName)
{
	int i;
	int flag=0;
	int k=0;
	for(i=0;i<OFT_count;i++)
	{
		if(!strcmp(fileName,OFT[i].fileName))
		{
			k=i;
			flag=1;
			OFT[i].openCount++;//多個進程打開,計算器加1
			break;
		}
	}
	if(flag!=1) //文件不在打開表,找到它,并寫到打開表最后
	{
		for(i=0;i<L.size;i++)
		{
			if(!strcmp(fileName,L.list[i].fileName)) //找到文件,寫到文件打開表
			{
				strcmp(OFT[OFT_count].fileName,L.list[i].fileName);
				strcmp(OFT[OFT_count].fileKind,L.list[i].fileKind);
				OFT[OFT_count].length=L.list[i].length;
				OFT[OFT_count].maxLength=L.list[i].maxLength;
				OFT[OFT_count].start=L.list[i].start;
				OFT[OFT_count].timeinfo=L.list[i].timeinfo;
				OFT[OFT_count].openCount++;
				k=OFT_count;
				//OFT_count=1;//初次打開,賦值為1
				flag=1; //標志在打開文件表里
			}
		}
	}
	if(flag==1)
	{
		for(i=0;i<OFT[k].length;i++)
			printf("%c",disk[OFT[k].start+i]); //顯示全部內容
		if(OFT[k].length==0)
			printf("文件為空,無內容顯示!\n");
	printf("\n===========================================\n");
	printf("\ncreate進程打開了文件%s,關閉請用close命令!\n\n",fileName);
	//	printf(",,,,\n");
	//	printf("OFT[k].length %d\n",OFT[k].length);
	}
	else
		printf("無此文件,請檢查文件名!\n");
}
void fileRen(char *fileName,char *newName)
{
	int i=0;
	int flag=0;
	for(i=0;i<OFT_count;i++) //若還有別的進程打開文件,剛不能重命名
	   if(!strcmp(fileName,OFT[i].fileName))
		{
			printf("別的進程占用文件!無法重命名!\n");
			return ;
		}
	for(i=0;i<L.size;i++)   //在文件表里找到,并重命名
		if(!strcmp(fileName,L.list[i].fileName))
		{
			strcpy(L.list[i].fileName,newName);
			flag=1;
			break;
		}
	if(flag==1)
		printf("重命名成功!\n");
	else
		printf("重命名失??!無此文件\n");

}
void fileDir()
{
	int i;
	if(L.size==0)  //文件表的 大小為0,說明沒有文件
	{
		printf("磁盤無文件!\n");
		return ;
	}
	for(i=0;i<L.size;i++)   //打印所有文件名
		printf("%s\n",L.list[i].fileName); 

}
void fileClose(char *fileName)
{
	int i;
	int flag=0;
	int j;
	for(i=0;i<OFT_count;i++)
	{
		if(!strcmp(fileName,OFT[i].fileName)) //在文件打開表里找到,把打開數減1,
			                                  //如果計數為0,顯示關閉成功!
		{
			OFT[i].openCount--;
			flag=1;
			if(OFT[i].openCount==0)
			{
				for(j=i;j<OFT_count;j++)
					OFT[j]=OFT[j+1]; //刪除要關閉的文件
				OFT_count--;
				printf("成功關閉文件!\n");
			}
			else
				printf("計數器減1\n");
			break;
		}
	}
	if(flag==0)
		printf("此文件沒有打開!\n");

}
///////////////////////////////
//磁盤空間管理 操作
int requestDisk(int *startPosistion,int *maxLength)
{
	struct freeDiskTable temp;
	int flag=0; //分配成功與否標志
	int k=0; //記錄插入位置
    SLNode *p=NULL;
	for(p=freeDiskTableHead;p->next!=NULL;p=p->next)
	{
		k++;//記錄位置,在空閑結點之后插入結點
		if(p->next->data.useFlag==0&&p->next->data.maxLength>=*maxLength)
		{
			temp.length=0;
			temp.maxLength=p->next->data.maxLength-*maxLength;
			temp.start=p->next->data.start+*maxLength;
			temp.useFlag=0;     //分解節點
			//=========================================
			p->next->data.maxLength=*maxLength;
			p->next->data.useFlag=1;   //設置分配的空間標志位
			*startPosistion=p->next->data.start;
			flag=1;//成功分配
			break;
			
		}
	
	}

    if(1==flag)  //成功分配空間,返回成功標志
	{
		if(!LinListInsert(freeDiskTableHead,k,temp))
		{
			printf("失敗!\n");
			system("pause");
			exit(0);
		}
	return 1;
	}
	else
		return 0;
}
///////////////////////////////////////////////////

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区中文字幕电影 | 蜜臀av国产精品久久久久| 26uuu亚洲综合色| 日韩欧美一级二级三级| 一区二区三区中文字幕| 亚洲狠狠丁香婷婷综合久久久| 中文无字幕一区二区三区| 亚洲18色成人| 成人自拍视频在线观看| 美女视频一区在线观看| 欧美日韩中文精品| 精品国产乱码久久久久久闺蜜| 亚洲天堂网中文字| 亚洲国产欧美在线人成| 大美女一区二区三区| 91精品国产综合久久婷婷香蕉| 国产欧美综合在线观看第十页| 艳妇臀荡乳欲伦亚洲一区| 99国产精品国产精品毛片| 久久精品人人做人人综合| 天天影视色香欲综合网老头| 成年人网站91| 337p粉嫩大胆噜噜噜噜噜91av| 亚洲一二三四久久| 国产精品久久久久久亚洲伦| 1024精品合集| 日韩一区中文字幕| 欧美美女激情18p| 成人免费观看男女羞羞视频| 日韩一区精品视频| 一区二区三区毛片| 国产精品乱码久久久久久| 国产成a人无v码亚洲福利| 国产欧美日韩在线看| thepron国产精品| 亚洲乱码国产乱码精品精的特点| av一区二区三区四区| 亚洲精品乱码久久久久久 | 欧美日韩国产123区| 亚洲国产精品自拍| 精品精品欲导航| 国产精品影视网| 亚洲一区在线视频| 精品国产乱码久久久久久久久| 成人毛片老司机大片| 男人的天堂久久精品| 亚洲欧美中日韩| 国产午夜久久久久| 91成人在线免费观看| 久久66热re国产| 一区二区三区成人在线视频| 日韩欧美中文字幕公布| 欧美日韩三级一区二区| 国产成人在线视频网址| 天堂在线一区二区| 一区二区三区欧美视频| 日本一区二区三区电影| 欧美日本在线一区| 色999日韩国产欧美一区二区| 蜜桃视频第一区免费观看| 亚洲小少妇裸体bbw| 国产精品毛片久久久久久| 国产精品美女久久久久久久网站| 精品三级av在线| 精品免费视频.| 日韩一区二区三区在线观看 | 日韩精品最新网址| 精品国产三级电影在线观看| 日韩一区二区不卡| 久久久久综合网| 久久嫩草精品久久久精品一| 精品捆绑美女sm三区| 中文字幕va一区二区三区| 国产精品九色蝌蚪自拍| 自拍偷拍国产精品| 亚洲国产成人va在线观看天堂| 蜜桃视频第一区免费观看| 成人av网在线| 国产丝袜美腿一区二区三区| 亚洲国产精品久久久久婷婷884 | 1区2区3区精品视频| 日韩经典中文字幕一区| av网站免费线看精品| 久久综合久久鬼色| 欧美不卡视频一区| 一区二区三区精品视频在线| 午夜电影一区二区三区| 高潮精品一区videoshd| 国产精品久久久久久久久图文区| 中文av一区特黄| 午夜一区二区三区视频| 白白色 亚洲乱淫| 91精品国产福利| 亚洲色图一区二区| 北岛玲一区二区三区四区| 久久精品视频在线看| 久久精品国产亚洲高清剧情介绍 | 日韩女优制服丝袜电影| 国产剧情在线观看一区二区| 色综合天天综合狠狠| 欧美草草影院在线视频| 亚洲成人av资源| 一本色道a无线码一区v| 国产精品久久三| 99久久99久久精品国产片果冻| 国产亚洲欧美一区在线观看| 九一九一国产精品| 精品日韩在线观看| 极品美女销魂一区二区三区免费| 26uuu精品一区二区| 国产成人亚洲综合a∨婷婷图片| 精品第一国产综合精品aⅴ| 极品尤物av久久免费看| 国产视频一区不卡| 91蜜桃网址入口| 视频在线观看一区| 久久天堂av综合合色蜜桃网| 成人综合婷婷国产精品久久| 亚洲欧美一区二区三区国产精品| 欧美视频一区二区在线观看| 六月丁香婷婷久久| 椎名由奈av一区二区三区| 欧美一三区三区四区免费在线看 | 在线观看日韩国产| 国产美女娇喘av呻吟久久| 亚洲一区二区三区三| 久久久一区二区| 欧美另类z0zxhd电影| 91日韩在线专区| 久久疯狂做爰流白浆xx| 一区二区三区免费看视频| 精品国产免费人成在线观看| 欧美专区日韩专区| 在线观看三级视频欧美| 国产精品亚洲第一区在线暖暖韩国| 亚洲国产成人av网| 亚洲第一狼人社区| 亚洲福利一二三区| 夜夜嗨av一区二区三区| 一区二区激情小说| 一片黄亚洲嫩模| 亚洲午夜精品网| 亚洲一区二区精品久久av| 亚洲资源在线观看| 亚洲一级二级在线| 日韩黄色免费电影| 久久97超碰色| av在线播放不卡| 欧美老人xxxx18| 久久―日本道色综合久久| 国产精品美女久久久久久久久久久| 欧美激情在线免费观看| 蜜臀91精品一区二区三区| 丝袜脚交一区二区| 国内成+人亚洲+欧美+综合在线| 国产一区三区三区| eeuss鲁一区二区三区| 欧美视频一区二区三区| 日韩精品一区二区三区中文不卡| 精品久久久久久久久久久久久久久久久 | 国产精品久久夜| 久久成人免费电影| 在线免费视频一区二区| 777奇米四色成人影色区| 国产日本一区二区| 久久99这里只有精品| 91高清视频在线| 国产精品国产三级国产三级人妇| 免费av网站大全久久| 欧美在线制服丝袜| 一区二区三区中文在线| 成人一级片在线观看| 日韩一区二区三区在线视频| 亚洲美女在线国产| 一本到不卡免费一区二区| 日韩理论在线观看| 国产91露脸合集magnet| 2020国产精品| 国产99精品在线观看| 国产女主播在线一区二区| 久久精品国产99国产精品| 欧美一区在线视频| 激情国产一区二区| 国产亚洲精品精华液| 国产黄色精品网站| 国产精品护士白丝一区av| 99久久精品免费看国产免费软件| 自拍偷自拍亚洲精品播放| 91猫先生在线| 日韩av不卡一区二区| 久久影音资源网| eeuss鲁片一区二区三区在线观看| 中文字幕一区二区三区视频| 日本伦理一区二区| 免费在线观看日韩欧美| 国产亚洲欧美在线| 91精品国产综合久久蜜臀| 国产成人无遮挡在线视频| 亚洲一区二区影院| 国产日韩v精品一区二区|