资源描述:
《实验四 文件管理实验》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、实验四文件管理实验◆实验名称:文件管理实验◆仪器、设备:计算机◆参考资料:操作系统实验指导书◆实验目的:设计一个n个用户的文件系统,用户在一次运行中只能打开一个文件,有Create、delete、open、close、read、write等命令。◆实验内容:为DOS系统设计一个简单的二级文件系统。要求可以实现下列几条命令CREATE创建文件DELETE删除文件OPEN打开文件CLOSE关闭文件READ读文件WRITE写文件◆实验原理、数据(程序)记录:#defineMAXNAME25/*thelarges
2、tlengthofmfdname,ufdname,filename*/#defineMAXCHILD50/*thelargestchild*/#defineMAX(MAXCHILD*MAXCHILD)/*thesizeoffpaddrno*/voidCreateF()/*CreateFile*/{intfpaddrno,flag=1,i;charfname[MAXNAME],str[50],str1[50],strtext[255],a[25];charfmode[25];intFindPANo();/*
3、findoutphysicaladdressnum*/intWriteF1();/*writefile*/intExistF(char*filename);/*WhetherFileNameExist,Exist-i,NotExist-0*/intExistD(char*dirname);if(strcmp(strupr(dirname),strupr(username))!=0){printf("Error.Youmustcreatefileinyourowndir.");wgetchar=1;
4、}else{printf("PleaseinputFileName:");gets(fname);ltrim(rtrim(fname));if(ExistF(fname)>=0){printf("Error.Name'%s'hasalreadyexisted.",fname);wgetchar=1;}else{printf("PleaseinputFileMode(0-ReadOnly,1-WriteOnly,2-ReadandWrite,3-Protect):");gets(fmode)
5、;ltrim(rtrim(fmode));if((strcmp(fmode,"0")==0)
6、
7、(strcmp(fmode,"1")==0)
8、
9、(strcmp(fmode,"2")==0)
10、
11、(strcmp(fmode,"3")==0)){fpaddrno=FindPANo();if(fpaddrno>=0){i=ExistD(username);strcpy(ufd[i]->ufdfile[fcount[i]].fname,fname);ufd[i]->ufdfile[fcount[i]].fpaddr
12、=fpaddrno;ufd[i]->ufdfile[fcount[i]].fmode=atoi(fmode);ifopen[i][fcount[i]].ifopen=0;ifopen[i][fcount[i]].openmode=4;strcpy(str,"c:\osfile\file\file");itoa(fpaddrno,str1,10);strcat(str,str1);fp_file=fopen(str,"wb");fclose(fp_file);fcount[i]++;while(fla
13、g){printf("Inputtextnow(Y/N):");gets(a);ltrim(rtrim(a));ufd[i]->ufdfile[fcount[i]-1].flength=0;if(strcmp(strupr(a),"Y")==0){fp_file=fopen(str,"wb+");ufd[i]->ufdfile[fcount[i]-1].flength=WriteF1();flag=0;}elseif(strcmp(strupr(a),"N")==0){flag=0;wgetchar=1;
14、}}printf("'%s'hasbeencreatedsuccessfully!",fname);}else{printf("Fail!NoDiskSpace.Pleaseformatyourdisk.");wgetchar=1;}}else{printf("Error.FileMode'sRangeis0-3");wgetchar=1;}}}}intExistF(char*filename)/