九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOCX文檔下載  

操作系統(tǒng)磁盤文件管理源碼

  • 資源ID:31936694       資源大小:141.03KB        全文頁數(shù):50頁
  • 資源格式: DOCX        下載積分:0積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要0積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號(hào),方便查詢和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付說明:
本站最低充值0.01積分,下載本資源后余額將會(huì)存入您的賬戶,您可在我的個(gè)人中心查看。
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請(qǐng)知曉。

操作系統(tǒng)磁盤文件管理源碼

頁眉#include<stdio.h>#include<string.h>#include<stdlib.h>#define MEM_D_SIZE 1024*1024/ 總磁盤空間為 1M#define DISKSIZE 1024磁盤塊的大小1K磁盤塊數(shù)目1K#define DISK_NUM 1024#define FATSIZE DISK_NUM*sizeof(struct fatitem) /FAT 表大小#define ROOT_DISK_NO FATSIZE/DISKSIZE+1/ 根目錄起始盤塊 號(hào)#define ROOT_DISK_SIZE sizeof(struct direct) / 根目錄大小 / 路徑最大長度為 #define DIR_MAXSIZE 1024 1KB最大子目錄數(shù) 5 #define MSD 5/最大文件深度為 5 #define MOFN 5/ 最大寫入文字長度 128KB #define MAX_WRITE 1024*128struct fatitem /* size 8*/int item; /*存放文件下一個(gè)磁盤的指針*/char em_disk;/* 磁盤塊是否空閑標(biāo)志位0空閑*/;頁腳頁眉struct direct/*-文件控制快信息-*/struct FCBchar name9; /*文件/目錄名 8位*/char property; /*屬性1位目錄 0位普通文件*/int size; /*文件/目錄字節(jié)數(shù)、盤塊數(shù))*/int firstdisk; /*文件/目錄 起始盤塊號(hào)*/int next; /*子目錄起始盤塊號(hào)*/int sign; /*1是根目錄 0不是根目錄*/directitemMSD+2;struct opentablestruct openttableitemchar name9; /* 文件名 */*/ 起始盤塊號(hào) int firstdisk; /*頁腳頁眉int size;/*文件的大小*/openitemMOFN;int cur_size; /*當(dāng)前打文件的數(shù)目*/;struct fatitem *fat; /*FAT 表*/struct direct *root; /* 根目錄 */struct direct *cur_dir; /* 當(dāng)前目錄 */struct opentable u_opentable; /* 文件打開表 */int fd=-1;/*文件打開表的序號(hào)*/char *bufferdir; /*記錄當(dāng)前路徑的名稱*/char *fdisk;/*虛擬磁盤起始地址*/void initfile();void format();void enter();void halt();int create(char *name);int open(char *name);int close(char *name);int write(int fd,char *buf,int len);int read(int fd,char *buf);頁腳頁眉int del(char *name);int mkdir(char *name);int rmdir(char *name);void dir();int cd(char *name);void print();void show();void initfile()fdisk = (char *)malloc(MEM_D_SIZE*sizeof(char);/* 申請(qǐng) 1M 空間 */ format();void format()int i;FILE *fp;表地址,引導(dǎo)區(qū)向后偏計(jì)算 fat = (struct fatitem *)(fdisk+DISKSIZE); /*FAT移 1k)*/頁腳頁眉/*-初始化 FAT 表*/fat0.item=-1;/* 引導(dǎo)塊 */fat0.em_disk=1;for(i=1;i<ROOT_DISK_NO-1;i+) /* 存放 FAT表的磁盤塊號(hào) */fati.item=i+1;fati.em_disk=1;*/*存放根目錄的磁盤塊號(hào) fatROOT_DISK_NO.item=-1;fatROOT_DISK_NO.em_disk=1;for(i=ROOT_DISK_NO+1;i<DISK_NUM;i+)fati.item = -1;fati.em_disk = 0;/*/根目錄的地址*/root = (struct direct *)(fdisk+DISKSIZE+FATSIZE); /*/*初始化目錄*/*/指向當(dāng)前目錄的目錄項(xiàng)頁腳頁眉root->directitem0.sign = 1;root->directitem0.firstdisk = ROOT_DISK_NO;strcpy(root->directitem0.name,.);root->directitem0.next = root->directitem0.firstdisk;root->directitem0.property = 1;root->directitem0.size = ROOT_DISK_SIZE;/*指向上一級(jí)目錄的目錄項(xiàng)*/root->directitem1.sign = 1;root->directitem1.firstdisk = ROOT_DISK_NO;strcpy(root->directitem1.name,.);root->directitem1.next = root->directitem0.firstdisk;root->directitem1.property = 1;root->directitem1.size = ROOT_DISK_SIZE;if(fp = fopen(disk.dat,wb)=NULL)printf(Error:n Cannot open file n);return;for(i=2;i<MSD+2;i+) /*-*/子目錄初始化為空root->directitemi.sign = 0;root->directitemi.firstdisk = -1;頁腳頁眉strcpy(root->directitemi.name,);root->directitemi.next = -1;root->directitemi.property = 0;root->directitemi.size = 0; if(fp = fopen(disk.dat,wb)=NULL)printf(Error:n Cannot open file n);return;把虛擬磁盤空間保存到磁盤文件中if(fwrite(fdisk,MEM_D_SIZE,1,fp)!=1)/*/printf(Error:n File write error! n);fclose(fp);void enter()頁腳頁眉FILE *fp;int i;fdisk = (char *)malloc(MEM_D_SIZE*sizeof(char);/* 申請(qǐng) 1M 空間*/if(fp=fopen(disk.dat, b)=NULL)printf(Error:nCannot open filen);return;讀入虛擬磁盤 disk.dat /* if(!fread(fdisk,MEM_D_SIZE,1,fp)把磁盤文件空間(內(nèi)存)*/printf(Error:nCannot read filen);exit(0);fat = (struct fatitem *)(fdisk+DISKSIZE); /* 找到 FAT表地址 */找到根目錄地址 root = (struct direct *)(fdisk+DISKSIZE+FATSIZE);/*/ fclose(fp);初始化用戶打開表/*/for(i=0;i<MOFN;i+)頁腳頁眉strcpy(u_opentable.openitemi.name,);u_opentable.openitemi.firstdisk = -1;u_opentable.openitemi.size = 0;u_opentable.cur_size = 0;cur_dir = root; /* 當(dāng)前目錄為根目錄*/bufferdir = (char *)malloc(DIR_MAXSIZE*sizeof(char);strcpy(bufferdir,Root:);void halt()FILE *fp;int i;if(fp=fopen(disk.dat,wb)=NULL)printf(Error:nCannot open filen);return;內(nèi)容讀入磁盤/*if(!fwrite(fdisk,MEM_D_SIZE,1,fp)內(nèi)存(把虛擬磁盤空間)頁腳頁眉文件 disk.dat */printf(Error:nFile write error!n);fclose(fp);free(fdisk);free(bufferdir);return;int create(char *name)int i,j;if(strlen(name)>8)/*文件名大于 8 位*/return(-1);for(j=2;j<MSD+2;j+) /*檢查創(chuàng)建文件是否與已存在的文件重名 */if(!strcmp(cur_dir->directitemj.name,name)頁腳頁眉break;if(j<MSD+2) /* 文件已經(jīng)存在*/return(-4);for(i=2;i<MSD+2;i+) /* 找到第一個(gè)空閑子目錄*/if(cur_dir->directitemi.firstdisk=-1)break;if(i>=MSD+2) /* 無空目錄項(xiàng)*/return(-2);if(u_opentable.cur_size>=MOFN) /* 打開文件太多 */return(-3);for(j=ROOT_DISK_NO+1;j<DISK_NUM;j+) /* 找到空閑盤塊j 后退出 */if(fatj.em_disk=0)break;if(j>=DISK_NUM)頁腳頁眉return(-5);fatj.em_disk = 1;/*將空閑塊置為已經(jīng)分配*/*填寫目錄項(xiàng)*/strcpy(cur_dir->directitemi.name,name);cur_dir->directitemi.firstdisk = j;cur_dir->directitemi.size = 0;cur_dir->directitemi.next = j;cur_dir->directitemi.property = 0;*/*fd = open(name);return 0;int open(char *name)int i, j;for(i=2;i<MSD+2;i+) /* 文件是否存在 */if(!strcmp(cur_dir->directitemi.name,name)break;頁腳頁眉if(i>=MSD+2)return(-1);/*是文件還是目錄 */if(cur_dir->directitemi.property=1)return(-4);/*文件是否打開*/for(j=0;j<MOFN;j+)if(!strcmp(u_opentable.openitemj.name,name) break;if(j<MOFN) /*文件已經(jīng)打開*/ return(-2);if(u_opentable.cur_size>=MOFN)/*文件打開太多 */return(-3);/*查找一個(gè)空閑用戶打開表項(xiàng)*/for(j=0;j<MOFN;j+)頁腳 頁眉if(u_opentable.openitemj.firstdisk=-1)break;/*填寫表項(xiàng)的相關(guān)信息*/u_opentable.openitemj.firstdisk = cur_dir->directitemi.firstdisk;strcpy(u_opentable.openitemj.name,name);u_opentable.openitemj.size = cur_dir->directitemi.size;u_opentable.cur_size+;/*返回用戶打開表表項(xiàng)的序號(hào) */return(j);int close(char *name)int i;for(i=0;i<MOFN;i+)if(!strcmp(u_opentable.openitemi.name,name) break;頁腳頁眉if(i>=MOFN)return(-1);/* 清空該文件的用戶打開表項(xiàng)的內(nèi)容 */strcpy(u_opentable.openitemi.name,);u_opentable.openitemi.firstdisk = -1;u_opentable.openitemi.size = 0;u_opentable.cur_size-;return 0;int write(int fd, char *buf, int len)char *first;int item, i, j, k;int ilenl, ilen2, modlen, temp;/* 用$字符作為空格 #字符作為換行符 */char Space = 32;char Endter= n;for(i=0;i<len;i+)頁腳頁眉if(bufi = $)bufi = Space;else if(bufi = #)bufi = Endter;*/ /* 讀取用戶打開表對(duì)應(yīng)表項(xiàng)第一個(gè)盤塊號(hào)item = u_opentable.openitemfd.firstdisk;*/ /* 找到當(dāng)前目錄所對(duì)應(yīng)表項(xiàng)的序號(hào)for(i=2;i<MSD+2;i+)if(cur_dir->directitemi.firstdisk=item)break;存放當(dāng)前目錄項(xiàng)的下標(biāo)-*/ temp = i; /*- /* 找到的是該文件的最后一塊磁盤塊*/ itemwhile(fatitem.item!=-1)查找該文件的下一盤塊 item =fatitem.item; /*-*/頁腳頁眉/*-計(jì)算出該文件的最末地址 */first = fdisk+item*DISKSIZE+u_opentable.openitemfd.size%DISKSIZE;/*-如果最后磁盤塊剩余的大小大于要寫入的文件的大小 */if(DISKSIZE-u_opentable.openitemfd.size%DISKSIZE>len)strcpy(first,buf);u_opentable.openitemfd.sizeu_opentable.openitemfd.size+len;cur_dir->directitemtemp.sizecur_dir->directitemtemp.size+len;elsefor(i=0;i<(DISKSIZE-u_opentable.openitemfd.size%DISKSIZE);i+)/*寫一部分內(nèi)容到最后一塊磁盤塊的剩余空間(字節(jié))*/firsti = buf i;還剩下多少字節(jié)未存字節(jié))(/*-計(jì)算分配完最后一塊磁盤的剩余空間儲(chǔ)*/頁腳頁眉ilen1 = len-(DISKSIZE-u_opentable.openitemfd.size%DISKSIZE);ilen2 = ilen1/DISKSIZE;modlen = ilen1%DISKSIZE;if(modlen>0)ilen2 = ilen2+1;/*-還需要多少塊磁盤塊-*/for(j=0;j<ilen2;j+)*/ for(i=ROOT_DISK_NO+1;i<DISK_NUM;i+)/* 尋找空閑磁盤塊if(fati.em_disk=0)break;if(i>=DISK_NUM) /*- -*/ 如果磁盤塊已經(jīng)分配完了return(-1);first = fdisk+i*DISKSIZE; /*-找到的那塊空閑磁盤塊的起始地址-*/if(j=ilen2-1) /*-如果是最后要分配的一塊-*/for(k=0;k<len-(DISKSIZE-u_opentable.openitemfd.size%DISKSIZE)-j*DI SKSIZE;k+)firstk = bufk;頁腳頁眉else/*-如果不是要最后分配的一塊-*/for(k=0;k<DISKSIZE;k+)firstk =bufk;找到一塊后將它的序號(hào)存放在上一塊的指i;/*-fatitem.item =針中 -*/fati.em_disk = 1; /*-置找到的磁盤快的空閑標(biāo)志位為已分配-*/fati.item = -1;/*- 它的指針為-1 (即沒有下一塊)-*/修改長度/*- -*/u_opentable.openitemfd.sizeu_opentable.openitemfd.size+len;cur_dir->directitemtemp.sizecur_dir->directitemtemp.size+len;return 0;int read(int fd, char *buf)頁腳頁眉int len = u_opentable.openitemfd.size;char *first;int i, j, item;int ilenl, modlen;item = u_opentable.openitemfd.firstdisk;ilenl = len/DISKSIZE;modlen = len%DISKSIZE;if(modlen!=0)ilen1 = ilen1+1;/*-計(jì)算文件所占磁盤的塊數(shù)-*/-*/ first = fdisk+item*DISKSIZE; /*-計(jì)算文件的起始位置for(i=0;i<ilen1;i+)if(i=ilen1-1)/*-如果在最后一個(gè)磁盤塊-*/for(j=0;j<len-i*DISKSIZE;j+)bufi*DISKSIZE+j = firstj;頁腳頁眉else /*-不在最后一塊磁盤塊-*/for(j=0;j<len-i*DISKSIZE;j+)bufi*DISKSIZE+j = firstj;item = fatitem.item; /*-查找下一盤塊-*/first = fdisk+item*DISKSIZE;return 0;int del(char *name)int i,cur_item,item,temp;for(i=2;i<MSD+2;i+) /*-查找要?jiǎng)h除文件是否在當(dāng)前目錄中-*/if(!strcmp(cur_dir->directitemi.name,name)break;cur_item = i; /*-用來保存目錄項(xiàng)的序號(hào)-*/ ,供釋放目錄中頁腳頁眉if(i>=MSD+2)/*-如果不在當(dāng)前目錄中-*/return(-1);是目(不)if(cur_dir->directitemcurjtem.property!=0) /*-如果刪除的錄-*/return(-3);-*/則不能刪除,退出for(i=0;i<MOFN;i+)/*-如果文件打開,if(!strcmp(u_opentable.openitemi.name,name)return(-2);該文件的起始盤塊號(hào) -*/ item = cur_dir->directitemcurjtem.firstdisk;/*-FATwhile(item!=-1)/*- 釋放空間,將表對(duì)應(yīng)項(xiàng)進(jìn)行修改-*/temp = fatitem.item;fatitem.item = -1;fatitem.em_disk = 0;item = temp;釋放目錄項(xiàng)/*/頁腳頁眉cur_dir->directitemcurjtem.sign = 0;cur_dir->directitemcurjtem.firstdisk = -1;strcpy(u_opentable.openitemcurjtem.name,);cur_dir->directitemcur_item.next = -1;cur_dir->directitemcur_item.property = 0;cur_dir->directitemcurjtem.size = 0;return 0;int mkdir(char *name)int i,j;struct direct *cur_mkdir;if(!strcmp(name,.)return(-4);if(!strcmp(name,.)return(-4);if(strlen(name)>8)/*-如果目錄名長度大于8位-*/return(-1);頁腳頁眉for(i=2;i<MSD+2;i+) /*- 如果有空閑目錄項(xiàng)退出-*/if(cur_dir->directitemi.firstdisk=-1)break;-*/ 已滿 if(i>=MSD+2) /*-目錄/ 文件return(-2);for(j=2;j<MSD+2;j+) /*-判斷是否有重名-*/if(!strcmp(cur_dir->directitemj.name,name)break;if(j<MSD+2) /*-如果有重名-*/return(-3);for(j=ROOT_DISK_NO+1;kDISK_NUM;j+)/*-找到空閑磁盤塊 j 后退出-*/if(fatj.em_disk=0) break;if(j>=DISK_NUM)return(-5);頁腳頁眉fatj.em_disk=1; /*-將該空閑塊設(shè)置為已分配-*/*填寫目錄項(xiàng)*/strcpy(cur_dir->directitemi.name,name);cur_dir->directitemi.firstdisk=j;cur_dir->directitemi.size=ROOT_DISK_SIZE;cur_dir->directitemi.next=j;cur_dir->directitemi.property=1;/*-所創(chuàng)目錄在虛擬磁盤上的地址(內(nèi)存物理地址)-*/cur_mkdir=(struct direct*)(fdisk+cur_dir->directitemi.firstdisk*DISKSIZE);/*-初始化目錄-*/*-指向當(dāng)前目錄的目錄項(xiàng)-*/cur_mkdir->directitem0.sign=0;cur_mkdir->directitem0.firstdisk=cur_dir->directitemi.firstdisk;strcpy(cur_mkdir->directitem0.name,.);cur_mkdir->directitem0.next=cur_mkdir->directitem0.firstdisk;cur_mkdir->directitem0.property=1;cur_mkdir->directitem0.size=ROOT_DISK_SIZE;頁腳頁眉/*-指向上一級(jí)目錄的目錄項(xiàng)-*/cur_mkdir->directitem1.sign=cur_dir->directitem0.sign;cur_mkdir->directitem1.firstdisk=cur_dir->directitem0.firstdisk;strcpy(cur_mkdir->directitem1.name,.);cur_mkdir->directitem1.next=cur_mkdir->directitem1.firstdisk;cur_mkdir->directitem1.property=1;cur_mkdir->directitem1.size=ROOT_DISK_SIZE;for(i=2;i<MSD+2;i+) /*- 子目錄都初始化為空-*/cur_mkdir->directitemi.sign=0;cur_mkdir->directitemi.firstdisk=-1;strcpy(cur_mkdir->directitemi.name,);cur_mkdir->directitemi.next=-1;cur_mkdir->directitemi.property=0;cur_mkdir->directitemi.size=0;return 0;int rmdir(char *name)頁腳頁眉int i,j,item;struct direct *temp_dir;/*-檢查當(dāng)前目錄項(xiàng)中有無該目錄 -*/for(i=2;i<MSD+2;i+)if(!strcmp(cur_dir->directitemi.name,name)break;if(i>=MSD+2) /*-沒有這個(gè)文件或目錄 -*/ return(-1);if(cur_dir->directitemi.property!=T)/*- 刪除的不是目錄 -*/return(-3);-*/*-判斷要?jiǎng)h除的目錄有無子目錄temp_dir=(struct direct *)(fdisk+cur_dir->directitemi.next*DISKSIZE);for(j=2;j<MSD+2;j+)if(temp_dir->directitemj.next!=-1)break;有子目錄或文件/*-if(j<MSD+2)-*/頁腳頁眉return(-2);/*找到起始盤塊號(hào),并將其釋放*/em=cur_dir->directitemi.firstdisk;fatitem.em_disk=0;/*-修改目錄項(xiàng)-*/cur_dir->directitemi.sign=0;cur_dir->directitemi.firstdisk=-1;strcpy(cur_dir->directitemi.name,);cur_dir->directitemi.next=-1;cur_dir->directitemi.property=0;cur_dir->directitemi.size=0;return 0;void dir()int i;for(i=2;i<MSD+2;i+)if(cur_dir->directitemi.firstdisk!=-1) /*-如果存在子目錄-*/頁腳頁眉printf(%st,cur_dir->directitemi.name);文件-*/if(cur_dir->directitemi.property=0) /*-printf(%dttn,cur_dir->directitemi.size);elseprintf( < 目錄 >tn);int cd(char *name)int i,j,item;char *str;char *temp,*point,*point1;struct direct *temp_dir;temp_dir=cur_dir;str=name;if(!strcmp(,name)cur_dir = root;strcpy(bufferdir,Root:);頁腳頁眉return 0;temp = (char *)malloc(DIR_MAXSIZE*sizeof(char);/*-最長路徑名字分配空問-*/for(i=0;i<(int)strlen(str);i+)tempi=stri;tempi=0;for(j=0卜MSD+2;j+) /*-查找該子目錄是否在當(dāng)前目錄中-*/if(!strcmp(temp_dir->directitemj.name,temp) break;*/ free(temp);/* 釋放申請(qǐng)的臨時(shí)空間/if(temp_dir->directitemj.property!=1) /*-打開的不是目錄-*/return(-2);-*/ 不在當(dāng)前目錄 if(j>=MSD+2) /*- return(-1);item=temp_dir->directitemj.firstdisk;/*- 當(dāng)前目錄在磁盤中位置-*/temp_dir=(struct direct *)(fdisk+item*DISKSIZE);if(!strcmp(.,name)if(cur_dir->directitemj-1.sign!=1) /*- 如果上級(jí)目錄不是根目錄 -*/point=strchr(bufferdir,); / 查找字符串 bufferdir 中首次出現(xiàn)字符 的位置while(point!=NULL)point1=point+1; /*- 減去 所占的空間 , 記錄下次查找的起始地址-*/point=strchr(point1,);將上一級(jí)目錄刪除*(point1-1)=0; /*-*/頁腳頁眉else/if(name0 !=)bufferdir = strcat(bufferdir,); /*-修改當(dāng)前目錄-*/bufferdir = strcat(bufferdir,name);-*/ /*-cur_dir=temp_dir;將當(dāng)前目錄確定下來return 0; void show()printf(%s>,bufferdir);void print()printf(*n);文件系統(tǒng)設(shè)計(jì)printf(*n);*n);命令格式printf(*t 說明printf(*tcd 目錄名 *n); 更改當(dāng)前目錄頁腳頁眉printf(*tmkdir 目錄名創(chuàng)建子目錄*n);刪除子目錄printf(*trmdir 目錄名 *n);顯示當(dāng)前目錄的子目錄*n); printf(*tdir創(chuàng)建文件 *n); printf(*tcreate 文件名printf(*tdel 文件名 刪除文件 *n);*n);打開文件printf(*topen 文件名關(guān)閉文件*n); 文件名printf(*tcloseprintf(*tread 讀文件 *n);*n); printf(*twrite寫文件*n); printf(*texit退出系統(tǒng)printf(*n);void main()FILE *fp;char ch;char a100;char code1110;char name10;int i,flag,r_size;頁腳頁眉char *contect;contect = (char *)malloc(MAX_WRITE*sizeof(char);if(fp=fopen(disk.dat,b)=NULL)printf(You have not format,Do you want format?(y/n);scanf(%c,&ch);if(ch=y)initfile();printf(Successfully format! n);elsereturn;enter();print();頁腳頁眉show();strcpy(code0,exit);strcpy(code1,create);strcpy(code2,open);strcpy(code3,close);strcpy(code4,write);strcpy(code5,ead);strcpy(code6,del);strcpy(code7,mkdir);strcpy(code8, mdir);strcpy(code9,dir);strcpy(code10,cd);while(1)scanf(%s,a);for(i=0;i<11;i+)if(!strcmp(codei,a)break;頁腳頁眉switch(i)case 0: / 退出文件系統(tǒng) free(contect);halt();return;case 1: / 創(chuàng)建文件scanf(%s,name);flag = create(name);if(flag=-1)printf(Error: n The length is too long !n);else if(flag=-2)printf(Error: n The direct item is already full !n);else if(flag=-3)printf(Error: n The number of openfile is too much !n);頁腳頁眉else if(flag=-4)printf(Error: n The name is already in the direct !n);else if(flag=-5)printf(Error: n The disk space is full!n);elseprintf(Successfully create a file! n);show();break;case 2:打開文件scanf(%s,name);fd = open(name);if(fd = -1)printf(Error: n The open file not exit! n);頁腳頁眉else if(fd = -2)printf(Error: n The file have already opened! n);else if(fd = -3)printf(Error: n The number of open file is too much! n);else if(fd = -4)printf(Error: n It is a direct,can not open for read or write!n);elseprintf(Successfully opened! n);show();break;case 3:/關(guān)閉文件頁腳頁眉scanf(%s,name);flag = close(name);if(flag = -1)printf(Error:n The file is not opened ! n);elseprintf(Successfully closed! n);show();break;case 4:寫文件if(fd =-1)printf(Error:n The file is not opened ! n);elseprintf(Please input the file contect:);scanf(%s,contect);頁腳頁眉flag=write(fd,contect,strlen(contect);if(flag = 0)printf(Successfully write! n);elseprintf(Error:n The disk size is not enough! n);show();break;case 5:讀文件if(fd =-1)printf(Error:n The file is not opened ! n);elseflag = read(fd,contect);if(flag = 0)頁腳頁眉for(i=0;i<u_opentable.openitemfd.size;i+)printf(%c,contecti);printf( n);show();break;case 6:/ 刪除文件scanf(%s,name);flag = del(name);if(flag = -1)printf(Error:n The file not exit! n);else if(flag = -2)printf(Error:n The file is opened,please first close it ! n);頁腳頁眉else if(flag = -3)printf(Error:n The delete is not file ! n);elseprintf(Successfully delete! n);show();break;case 7:/創(chuàng)建子目錄scanf(%s,name);flag = mkdir(name);if(flag = -1)printf(Error:n The length of name is to long! n);else if(flag = -#)printf(Error:n The direct item is already full ! n);頁腳頁眉else if(flag = -3)printf(Error:n The name is already in the direct ! n);else if(flag = -4)the the name of or . can not as n printf(Error: direct!n);else if(flag = -5)printf(Error: n The disk space is full!n);else if(flag = 0)printf(Successfully make dircet! n);show();break;case 8:11刪除子目錄scanf(%s,name);頁腳頁眉flag = rmdir(name);if(flag = -1)printf(Error:n The direct is not exist! n);else if(flag = -2)printf(Error:nThe direct has son direct ,please first remove the son dircct!n);else if(flag = -3)printf(Error:n The remove is not direct ! n);printf(Successfully remove dircet! n);show();break;顯示當(dāng)前子目錄case 9: 頁腳頁眉dir();show();break;case 10:/更改當(dāng)前目錄scanf(%s,name);flag = cd(name);if(flag = -1)printf(Error:n The path no correct!n);else if(flag = -2)printf(Error:nThe opened is not direct!n);show();break;default:printf(Error!n The command is wrong! n);show();頁腳頁眉頁腳

注意事項(xiàng)

本文(操作系統(tǒng)磁盤文件管理源碼)為本站會(huì)員(燈火****19)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!