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

上傳人:燈火****19 文檔編號(hào):31936694 上傳時(shí)間:2021-10-13 格式:DOCX 頁(yè)數(shù):50 大?。?41.03KB
收藏 版權(quán)申訴 舉報(bào) 下載
操作系統(tǒng)磁盤(pán)文件管理源碼_第1頁(yè)
第1頁(yè) / 共50頁(yè)
操作系統(tǒng)磁盤(pán)文件管理源碼_第2頁(yè)
第2頁(yè) / 共50頁(yè)
操作系統(tǒng)磁盤(pán)文件管理源碼_第3頁(yè)
第3頁(yè) / 共50頁(yè)

下載文檔到電腦,查找使用更方便

0 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《操作系統(tǒng)磁盤(pán)文件管理源碼》由會(huì)員分享,可在線閱讀,更多相關(guān)《操作系統(tǒng)磁盤(pán)文件管理源碼(50頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、頁(yè)眉 #include #include #include #define MEM_D_SIZE 1024*1024 // 總磁盤(pán)空間為 1M #define DISKSIZE 1024 〃磁盤(pán)塊的大小1K 〃磁盤(pán)塊數(shù)目1K #define DISK_NUM 1024 #define FATSIZE DISK_NUM*sizeof(struct fatitem) //FAT 表大小 #define ROOT_DISK_NO FATSIZE/DISKSIZE+1 // 根目錄起始盤(pán)塊 號(hào) #define ROOT_D

2、ISK_SIZE sizeof(struct direct) // 根目錄大小 // 路徑最大長(zhǎng) 度為 #define DIR_MAXSIZE 1024 1KB 〃最大子目錄數(shù) 5 #define MSD 5 //最大文件深度為 5 #define MOFN 5 // 最大寫(xiě)入文字長(zhǎng)度 128KB #define MAX_WRITE 1024*128 struct fatitem /* size 8*/ int item; /*存放文件下一個(gè)磁盤(pán)的指針*/ { char em_disk;/* 磁盤(pán)塊是否空閑標(biāo)志位 0空閑*/ }; 頁(yè)腳 頁(yè)眉 struct dire

3、ct { /*-----文件控制快信息-----*/ struct FCB { char name[9]; /*文件/目錄名 8位*/ char property; /*屬性1位目錄 0位普通文件*/ int size; /*文件/目錄字節(jié)數(shù)、盤(pán)塊數(shù))*/ int firstdisk; /*文件/目錄 起始盤(pán)塊號(hào)*/ int next; /*子目錄起始盤(pán)塊號(hào)*/ int sign; /*1是根目錄 0不是根目錄*/ }directitem[MSD+2]; }; struct opentable struct openttableitem { char name[

4、9]; /* 文件名 */ */ 起始盤(pán)塊號(hào) int firstdisk; /* 頁(yè)腳 頁(yè)眉 int size; /*文件的大小*/ }openitem[MOFN]; int cur_size; /*當(dāng)前打文件的數(shù)目*/ }; struct fatitem *fat; /*FAT 表*/ struct direct *root; /* 根目錄 */ struct direct *cur_dir; /* 當(dāng)前目錄 */ struct opentable u_opentable; /* 文件打開(kāi)表 */ int fd=-1; /*文件打開(kāi)表的序號(hào)*/ char *buff

5、erdir; /*記錄當(dāng)前路徑的名稱(chēng)*/ char *fdisk; /*虛擬磁盤(pán)起始地址*/ 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); 頁(yè)腳 頁(yè)眉 int del(char *name); int mkdir(char *nam

6、e); 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)*/ 頁(yè)腳 頁(yè)眉

7、 /*-----初始化 FAT 表 */ fat[0].item=-1; /* 引導(dǎo)塊 */ fat[0].em_disk=1; for(i=1;i

8、.em_disk = 0; /* */ 根目錄的地址*/ root = (struct direct *)(fdisk+DISKSIZE+FATSIZE); /* /*初始化目錄*/ /* */指向當(dāng)前目錄的目錄項(xiàng)頁(yè)腳 頁(yè)眉 root->directitem[0].sign = 1; root->directitem[0].firstdisk = ROOT_DISK_NO; strcpy(root->directitem[0].name,.); root->directitem[0].next = root->directitem[0].firstdisk; ro

9、ot->directitem[0].property = 1; root->directitem[0].size = ROOT_DISK_SIZE; /* 指向上一級(jí)目錄的目錄項(xiàng) */ root->directitem[1].sign = 1; root->directitem[1].firstdisk = ROOT_DISK_NO; strcpy(root->directitem[1].name,..); root->directitem[1].next = root->directitem[0].firstdisk; root->directitem[1].p

10、roperty = 1; root->directitem[1].size = ROOT_DISK_SIZE; if((fp = fopen(disk.dat,wb))==NULL) { printf(Error:\n Cannot open file \n); return; } for(i=2;idirectitem[i].sign = 0; root->directitem[i].firstdisk = -1; 頁(yè)腳 頁(yè)眉 strcpy(root->directitem[i].name,\);

11、 root->directitem[i].next = -1; root->directitem[i].property = 0; root->directitem[i].size = 0; } if((fp = fopen(disk.dat,wb))==NULL) printf(Error:\n Cannot open file \n); return; } 把虛擬磁盤(pán)空間保存到磁盤(pán)文件中 if(fwrite(fdisk,MEM_D_SIZE,1,fp)!=1)/**/ { printf(Error:\n File write error! \n); } fclose

12、(fp); } void enter() 頁(yè)腳 頁(yè)眉 { 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 file\n); return; } 讀入虛擬磁盤(pán) disk.dat /* if(!fread(fdisk,MEM_D_SIZE,1,fp)) 把磁盤(pán)文件空間 (內(nèi)存)*/ { printf(Error:\nCannot read

13、 file\n); exit(0); } fat = (struct fatitem *)(fdisk+DISKSIZE); /* 找到 FAT表地址 */ 找到根目錄地址 root = (struct direct *)(fdisk+DISKSIZE+FATSIZE);/**/ fclose(fp); 初始化用戶(hù)打開(kāi)表/* */ for(i=0;i

14、penitem[i].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 file\n); return; } 內(nèi)容讀入磁盤(pán)/*if(!fw

15、rite(fdisk,MEM_D_SIZE,1,fp)) 內(nèi)存(把虛擬磁盤(pán)空間)頁(yè)腳 頁(yè)眉 文件 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

16、rcmp(cur_dir->directitem[j].name,name)) 頁(yè)腳 頁(yè)眉 break; } if(jdirectitem[i].firstdisk==-1) break; } if(i>=MSD+2) /* 無(wú)空目錄項(xiàng) */ return(-2); if(u_opentable.cur_size>=MOFN) /* 打開(kāi)文件太多 */ return(-3); for(j=ROO

17、T_DISK_NO+1;j=DISK_NUM) 頁(yè)腳 頁(yè)眉 return(-5); fat[j].em_disk = 1; /*將空閑塊置為已經(jīng)分配*/ /* 填寫(xiě)目錄項(xiàng) */ strcpy(cur_dir->directitem[i].name,name); cur_dir->directitem[i].firstdisk = j; cur_dir->directitem[i].size = 0; cur_dir->direct

18、item[i].next = j; cur_dir->directitem[i].property = 0; */ /* fd = open(name); return 0; int open(char *name) { int i, j; for(i=2;idirectitem[i].name,name)) break; 頁(yè)腳 頁(yè)眉 } if(i>=MSD+2) return(-1); /* 是文件還是目錄 */ if(cur_dir->directitem[

19、i].property==1) return(-4); /* 文件是否打開(kāi) */ for(j=0;j=MOFN)/* 文件打開(kāi)太多 */ return(-3); /* 查找一個(gè)空閑用戶(hù)打開(kāi)表項(xiàng) */ for(j=0;j

20、rstdisk==-1) break; } /* 填寫(xiě)表項(xiàng)的相關(guān)信息 */ u_opentable.openitem[j].firstdisk = cur_dir->directitem[i].firstdisk; strcpy(u_opentable.openitem[j].name,name); u_opentable.openitem[j].size = cur_dir->directitem[i].size; u_opentable.cur_size++; /* 返回用戶(hù)打開(kāi)表表項(xiàng)的序號(hào) */ return(j); } int close(char *name)

21、 int i; for(i=0;i=MOFN) return(-1); /* 清空該文件的用戶(hù)打開(kāi)表項(xiàng)的內(nèi)容 */ strcpy(u_opentable.openitem[i].name,\); u_opentable.openitem[i].firstdisk = -1; u_opentable.openitem[i].size = 0; u_opentable.cur_size--; return

22、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

23、表對(duì)應(yīng)表項(xiàng)第一個(gè)盤(pán)塊號(hào) item = u_opentable.openitem[fd].firstdisk; */ /* 找到當(dāng)前目錄所對(duì)應(yīng)表項(xiàng)的序號(hào) for(i=2;idirectitem[i].firstdisk==item) break; } 存放當(dāng)前目錄項(xiàng)的下標(biāo)-*/ temp = i; /*- /* 找到的是該文件的最后一塊磁 盤(pán)塊 */ item while(fat[item].item!=-1) { 查找該文件的下一盤(pán)塊 item =fat[item].item; /*---*/ 頁(yè)腳 頁(yè)眉

24、} /*-----計(jì)算出該文件的最末地址 ——*/ first = fdisk+item*DISKSIZE+u_opentable.openitem[fd].size%DISKSIZE; /*-----如果最后磁盤(pán)塊剩余的大小大于要寫(xiě)入的文件的大小 */ if(DISKSIZE-u_opentable.openitem[fd].size%DISKSIZE>len) { strcpy(first,buf); u_opentable.openitem[fd].size u_opentable.openitem[fd].size+len; cur_dir->directitem[

25、temp].size cur_dir->directitem[temp].size+len; } else { for(i=0;i<(DISKSIZE-u_opentable.openitem[fd].size%DISKSIZE);i++) {/*寫(xiě)一部分內(nèi)容到最后一塊磁盤(pán)塊的剩余空間(字節(jié))*/ first[i] = buf [i]; } 還剩下多少字節(jié)未存字節(jié))(/*----計(jì)算分配完最后一塊磁盤(pán)的剩余空間儲(chǔ) */ 頁(yè)腳 頁(yè)眉 ilen1 = len-(DISKSIZE-u_opentable.openitem[fd].size%DISKSIZE); ilen

26、2 = ilen1/DISKSIZE; modlen = ilen1%DISKSIZE; if(modlen>0) ilen2 = ilen2+1;/*-- 還需要多少塊磁盤(pán)塊-*/ for(j=0;j=DISK_NUM) /*-- -*/ 如果磁盤(pán)塊已經(jīng)分配完了 return(-1); first = fdisk+i*DISKSIZE; /*--找到的那塊空閑磁

27、盤(pán)塊的起始地址-*/ if(j==ilen2-1) /*-- 如果是最后要分配的一塊 -*/ { for(k=0;k

28、isk = 1; /*-- 置找到的磁盤(pán)快的空閑標(biāo)志位為已分配 -*/ fat[i].item = -1; /*-- 它的指針為 -1 (即沒(méi)有下一塊 )-*/ } 修改長(zhǎng)度 /*-- -*/ u_opentable.openitem[fd].size u_opentable.openitem[fd].size+len; cur_dir->directitem[temp].size cur_dir->directitem[temp].size+len; } return 0; } int read(int fd, char *buf) 頁(yè)腳 頁(yè)眉 { int

29、len = u_opentable.openitem[fd].size; char *first; int i, j, item; int ilenl, modlen; item = u_opentable.openitem[fd].firstdisk; ilenl = len/DISKSIZE; modlen = len%DISKSIZE; if(modlen!=0) ilen1 = ilen1+1;/*--計(jì)算文件所占磁盤(pán)的塊數(shù)-*/ -*/ first = fdisk+item*DISKSIZE; /*--計(jì)算文件的起始位置 for(i=0;i

30、 { if(i==ilen1-1)/*-- 如果在最后一個(gè)磁盤(pán)塊-*/ { for(j=0;j

31、har *name) { int i,cur_item,item,temp; for(i=2;idirectitem[i].name,name)) { break; } cur_item = i; /*--用來(lái)保存目錄項(xiàng)的序號(hào)-*/ ,供釋放目錄中頁(yè)腳 頁(yè)眉 if(i>=MSD+2)/*--如果不在當(dāng)前目錄中-*/ return(-1); 是目(不)if(cur_dir->directitem[curjtem].property!=0) /*-- 如果刪除

32、的 錄-*/ return(-3); -*/則不能刪除,退出for(i=0;idirectitem[curjtem].firstdisk;/*-- FATwhile(item!=-1)/*-- 釋放空間,將表對(duì)應(yīng)項(xiàng)進(jìn)行修改-*/ { temp = fat[item].item; fat[item].item = -1; fat[item].em_

33、disk = 0; item = temp; } 釋放目錄項(xiàng)/* */ 頁(yè)腳 頁(yè)眉 cur_dir->directitem[curjtem].sign = 0; cur_dir->directitem[curjtem].firstdisk = -1; strcpy(u_opentable.openitem[curjtem].name,\); cur_dir->directitem[cur_item].next = -1; cur_dir->directitem[cur_item].property = 0; cur_dir->directitem[curjtem].siz

34、e = 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) /*-如果目錄名長(zhǎng)度大于 8位-*/ return(-1); 頁(yè)腳 頁(yè)眉 for(i=2;idirectitem[i].firstdisk==-1) b

35、reak; } -*/ 已滿(mǎn) if(i>=MSD+2) /*-目錄/ 文件 return(-2); for(j=2;jdirectitem[j].name,name)) break; } if(j=DISK_NUM) r

36、eturn(-5); 頁(yè)腳 頁(yè)眉 fat[j].em_disk=1; /*- 將該空閑塊設(shè)置為已分配-*/ /* 填寫(xiě)目錄項(xiàng) */ strcpy(cur_dir->directitem[i].name,name); cur_dir->directitem[i].firstdisk=j; cur_dir->directitem[i].size=ROOT_DISK_SIZE; cur_dir->directitem[i].next=j; cur_dir->directitem[i].property=1; /*-所創(chuàng)目錄在虛擬磁盤(pán)上的地址(內(nèi)存物理地址)-*/ cur_mkd

37、ir=(struct direct *)(fdisk+cur_dir->directitem[i].firstdisk*DISKSIZE); /*-初始化目錄-*/ /*-指向當(dāng)前目錄的目錄項(xiàng)-*/ cur_mkdir->directitem[0].sign=0; cur_mkdir->directitem[0].firstdisk=cur_dir->directitem[i].firstdisk; strcpy(cur_mkdir->directitem[0].name,.); cur_mkdir->directitem[0].next=cur_mkdir->directite

38、m[0].firstdisk; cur_mkdir->directitem[0].property=1; cur_mkdir->directitem[0].size=ROOT_DISK_SIZE; 頁(yè)腳 頁(yè)眉 /*-指向上一級(jí)目錄的目錄項(xiàng)-*/ cur_mkdir->directitem[1].sign=cur_dir->directitem[0].sign; cur_mkdir->directitem[1].firstdisk=cur_dir->directitem[0].firstdisk; strcpy(cur_mkdir->directitem[1].name,..);

39、 cur_mkdir->directitem[1].next=cur_mkdir->directitem[1].firstdisk; cur_mkdir->directitem[1].property=1; cur_mkdir->directitem[1].size=ROOT_DISK_SIZE; for(i=2;idirectitem[i].sign=0; cur_mkdir->directitem[i].firstdisk=-1; strcpy(cur_mkdir->directitem[i].n

40、ame,\); cur_mkdir->directitem[i].next=-1; cur_mkdir->directitem[i].property=0; cur_mkdir->directitem[i].size=0; } return 0; } int rmdir(char *name) { 頁(yè)腳 頁(yè)眉 int i,j,item; struct direct *temp_dir; /*-檢查當(dāng)前目錄項(xiàng)中有無(wú)該目錄 -*/ for(i=2;idirectitem[i].name,name))

41、 break; if(i>=MSD+2) /*-沒(méi)有這個(gè)文件或目錄 -*/ return(-1); if(cur_dir->directitem[i].property!=T)/*- 刪除的不是目錄 -*/ return(-3); -*//*-判斷要?jiǎng)h除的目錄有無(wú)子目錄 temp_dir=(struct direct *)(fdisk+cur_dir->directitem[i].next*DISKSIZE); for(j=2;jdirectitem[j].next!=-1) break; } 有子目錄或文件/*-i

42、f(jdirectitem[i].firstdisk; fat[item].em_disk=0; /*-修改目錄項(xiàng)-*/ cur_dir->directitem[i].sign=0; cur_dir->directitem[i].firstdisk=-1; strcpy(cur_dir->directitem[i].name,\); cur_dir->directitem[i].next=-1; cur_dir->directitem[i].pr

43、operty=0; cur_dir->directitem[i].size=0; return 0; } void dir() { int i; for(i=2;idirectitem[i].firstdisk!=-1) /*- 如果存在子目錄-*/ { 頁(yè)腳 頁(yè)眉 printf(%s\t,cur_dir->directitem[i].name); 文件-*/ if(cur_dir->directitem[i].property==0) /*- printf(%d\t\t\n,cur_dir->direct

44、item[i].size); else printf(\ < 目錄 >\t\n); } } } 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:); 頁(yè)腳 頁(yè)眉 return 0; } temp = (char *)

45、malloc(DIR_MAXSIZE*sizeof(char));/*- 最長(zhǎng)路徑名字分配空 問(wèn)-*/ for(i=0;i<(int)strlen(str);i++) temp[i]=str[i]; temp[i]=\0; for(j=0卜MSD+2;j++) /*-查找該子目錄是否在當(dāng)前目錄中 -*/ { if(!strcmp(temp_dir->directitem[j].name,temp)) break; } */ free(temp);/* 釋放申請(qǐng)的臨時(shí)空間 //if(temp_dir->directitem[j].property!=1) /*- 打開(kāi)的不是目

46、錄-*/ //return(-2); -*/ 不在當(dāng)前目錄 if(j>=MSD+2) /*- return(-1); item=temp_dir->directitem[j].firstdisk; /*- 當(dāng)前目錄在磁盤(pán)中位置 -*/ temp_dir=(struct direct *)(fdisk+item*DISKSIZE); if(!strcmp(..,name)) { if(cur_dir->directitem[j-1].sign!=1) /*- 如果上級(jí)目錄不是根目錄 -*/ { point=strchr(bufferdir,\\); // 查找字符串 buff

47、erdir 中首次出現(xiàn)字符 \ 的 位置 while(point!=NULL) { point1=point+1; /*- 減去 \ 所占的空間 , 記錄下次查找的起始地址 -*/ point=strchr(point1,\\); } 將上一級(jí)目錄刪除 *(point1-1)=\0; /*- -*/ } 頁(yè)腳 頁(yè)眉 else { //if(name[0] !=\\) bufferdir = strcat(bufferdir,\\\); /*- 修改當(dāng)前目錄 -*/ bufferdir = strcat(bufferdir,name); } -*/

48、/*-cur_dir=temp_dir; 將當(dāng)前目錄確定下來(lái) return 0; } void show() { printf(%s>,bufferdir); } void print() { printf(* ******************************************************* *\n); 文件系統(tǒng)設(shè)計(jì) printf(* ****************************************** **\n); *\n); 命令格式printf(*\t 說(shuō)明 printf(*\tcd 目錄名 *\n)

49、; 更改當(dāng)前目錄 頁(yè)腳 頁(yè)眉 printf(*\tmkdir 目錄名 創(chuàng)建子目錄 *\n); 刪除子目錄 printf(*\trmdir 目錄名 *\n); 顯示當(dāng)前目錄的子目錄 *\n); printf(*\tdir 創(chuàng)建文件 *\n); printf(*\tcreate 文件名 printf(*\tdel 文件名 刪除文件 *\n); *\n); 打開(kāi)文件printf(*\topen 文件名 關(guān)閉文件 *\n); 文件名printf(*\tclose printf(*\tread 讀文件 *\n); *\n); printf(*\twrite 寫(xiě)文件 *\n); p

50、rintf(*\texit 退出系統(tǒng) printf(* ******************************************************* *\n); } void main() { FILE *fp; char ch; char a[100]; char code[11][10]; char name[10]; int i,flag,r_size; 頁(yè)腳 頁(yè)眉 char *contect; contect = (char *)malloc(MAX_WRITE*sizeof(char)); i

51、f((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); else return; } } enter(); print(); 頁(yè)腳 頁(yè)眉 show(); strcpy(code[0],exit); strcpy(code[1],create); strcpy(code[2],open); s

52、trcpy(code[3],close); strcpy(code[4],write); strcpy(code[5], ead); strcpy(code[6],del); strcpy(code[7],mkdir); strcpy(code[8], mdir); strcpy(code[9],dir); strcpy(code[10],cd); while(1) { scanf(%s,a); for(i=0;i<11;i++) { if(!strcmp(code[i],a)) break; } 頁(yè)腳 頁(yè)眉 switch(i) { case 0: /

53、/ 退出文件系統(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

54、openfile is too much !\n); } 頁(yè)腳 頁(yè)眉 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); else { printf(Successfully create a file! \n); } show(); break; case 2:〃打開(kāi)文件 scanf(%s,name); fd = open

55、(name); if(fd == -1) { printf(Error: \n The open file not exit! \n); 頁(yè)腳 頁(yè)眉 } 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,

56、can not open for read or write! \n); } else { printf(Successfully opened! \n); } show(); break; case 3://關(guān)閉文件 頁(yè)腳 頁(yè)眉 scanf(%s,name); flag = close(name); if(flag == -1) printf(Error:\n The file is not opened ! \n); } else { printf(Successfully closed! \n); } show(); break; c

57、ase 4:〃寫(xiě)文件 if(fd ==-1) { printf(Error:\n The file is not opened ! \n); } else { printf(Please input the file contect:); scanf(%s,contect); 頁(yè)腳 頁(yè)眉 flag=write(fd,contect,strlen(contect)); if(flag == 0) { printf(Successfully write! \n); } else { printf(Error:\n The disk size is not eno

58、ugh! \n); } } show(); break; case 5:〃 讀文件 if(fd ==-1) { printf(Error:\n The file is not opened ! \n); } else { flag = read(fd,contect); if(flag == 0) 頁(yè)腳 頁(yè)眉 { for(i=0;i

59、除文件 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); 頁(yè)腳 頁(yè)眉 else if(flag == -3) { printf(Error:\n The delete is not file ! \n); } else { printf(Succe

60、ssfully 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); } 頁(yè)腳 頁(yè)眉 else if(flag == -3) { printf(Err

61、or:\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:1

62、1刪除子目錄 scanf(%s,name); 頁(yè)腳 頁(yè)眉 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 !

63、\n); } printf(Successfully remove dircet! \n); } show(); break; 顯示當(dāng)前子目錄 case 9:〃 頁(yè)腳 頁(yè)眉 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(); 頁(yè)腳 頁(yè)眉 頁(yè)腳

展開(kāi)閱讀全文
溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

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