实验六 文件系统设计Word格式文档下载.docx
《实验六 文件系统设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《实验六 文件系统设计Word格式文档下载.docx(29页珍藏版)》请在冰豆网上搜索。
Fpaddr文件物理地址
Flength文件长度
Fmode文件属性(filemode:
0-ReadOnly;
1-WriteOnly;
2-ReadandWrite(default))
Fname文件名称
②用户创建的文件,可以编号存储于磁盘上。
如:
file0,file1,file2…并以编号作为物理地址,在目录中进行登记。
③本程序需要在c:
下建一个名为osfile的目录及一个名为file的子目录,在利用程序创建了文件系统后,可以在这个文件夹下查看到相关的内容。
5.实验程序
#include"
stdio.h"
string.h"
conio.h"
stdlib.h"
#defineMAXNAME25/*thelargestlengthofmfdname,ufdname,filename*/
#defineMAXCHILD50/*thelargestchild*/
#defineMAX(MAXCHILD*MAXCHILD)/*thesizeoffpaddrno*/
typedefstruct/*thestructureofOSFILE*/
{
intfpaddr;
/*filephysicaladdress*/
intflength;
/*filelength*/
intfmode;
/*filemode:
2-ReadandWrite(default);
*/
charfname[MAXNAME];
/*filename*/
}OSFILE;
typedefstruct/*thestructureofOSUFD*/
charufdname[MAXNAME];
/*ufdname*/
OSFILEufdfile[MAXCHILD];
/*ufdownfile*/
}OSUFD;
typedefstruct/*thestructureofOSUFD'
LOGIN*/
charufdpword[8];
/*ufdpassword*/
}OSUFD_LOGIN;
typedefstruct/*fileopenmode*/
intifopen;
/*ifopen:
0-close,1-open*/
intopenmode;
/*0-readonly,1-writeonly,2-readandwrite,3-initial*/
}OSUFD_OPENMODE;
OSUFD*ufd[MAXCHILD];
/*ufdandufdownfiles*/
OSUFD_LOGINufd_lp;
intucount=0;
/*thecountofmfd'
sufds*/
intfcount[MAXCHILD];
/*thecountofufd'
sfiles*/
intloginsuc=0;
/*whetherloginsuccessfully*/
charusername[MAXNAME];
/*recordloginuser'
sname22*/
chardirname[MAXNAME];
/*recordcurrentdirectory*/
intfpaddrno[MAX];
/*recordfilephysicaladdressnum*/
OSUFD_OPENMODEifopen[MAXCHILD][MAXCHILD];
/*recordfileopen/close*/
intwgetchar;
/*whethergetchar()*/
FILE*fp_mfd,*fp_ufd,*fp_file_p,*fp_file;
voidmain()
inti,j,choice1;
charchoice[50];
/*choiceoperation:
dir,create,delete,open,delete,modify,read,write*/
intchoiceend=1;
/*whetherchoiceend*/
char*rtrim(char*str);
/*removethetrailingblanks.*/
char*ltrim(char*str);
/*removetheheadingblanks.*/
voidLoginF();
/*LOGINFileSystem*/
voidDirF();
/*DirFileSystem*/
voidCdF();
/*ChangeDir*/
voidCreateF();
/*CreateFile*/
voidDeleteF();
/*DeleteFile*/
voidModifyFM();
/*ModifyFileMode*/
voidOpenF();
/*OpenFile*/
voidCloseF();
/*CloseFile*/
voidReadF();
/*ReadFile*/
voidWriteF();
/*WriteFile*/
voidQuitF();
/*QuitFileSystem*/
voidhelp();
if((fp_mfd=fopen("
c:
\\osfile\\mfd"
"
rb"
))==NULL)
{
fp_mfd=fopen("
wb"
);
fclose(fp_mfd);
}
for(i=0;
i<
MAX;
i++)fpaddrno[i]=0;
/*textattr(BLACK*16|WHITE);
/*clrscr();
*//*clearscreen*/
LoginF();
/*userlogin*/
if(loginsuc==1)/*LoginSuccessfully*/
{
while
(1)
{
wgetchar=0;
if(choiceend==1)
printf("
\n\nC:
\\%s>
"
strupr(dirname));
}
elseprintf("
Badcommandorfilename.\nC:
strupr(username));
gets(choice);
strcpy(choice,ltrim(rtrim(strlwr(choice))));
if(strcmp(choice,"
dir"
)==0)choice1=1;
elseif(strcmp(choice,"
create"
)==0)choice1=2;
delete"
)==0)choice1=3;
attrib"
)==0)choice1=4;
open"
)==0)choice1=5;
close"
)==0)choice1=6;
read"
)==0)choice1=7;
modify"
)==0)choice1=8;
exit"
)==0)choice1=9;
cls"
)==0)choice1=10;
cd"
)==0)choice1=11;
help"
)==0)choice1=20;
elsechoice1=12;
switch(choice1)
case1:
DirF();
choiceend=1;
break;
case2:
CreateF();
if(!
wgetchar)getchar();
case3:
DeleteF();
wgetchar)getchar();
case4:
ModifyFM();
case5:
OpenF();
if(!
case6:
CloseF();
case7:
ReadF();
case8:
WriteF();
case9:
printf("
\nYouhaveexitedthissystem."
QuitF();
exit(0);
case10:
clrscr();
case11:
CdF();
case20:
help();
default:
choiceend=0;
}
elseprintf("
\nAccessdenied."
}
voidhelp(void)
printf("
\nTheCommandList\n"
/*printf("
\nCdAttribCreateModifyReadOpenClsDeleteExitClose\n"
Create:
Createafile(Youcaninitializefile'
sattributeandcontent.)\n"
Open:
Openafile