实验文件管理二Word文档格式.docx
- 文档编号:18378873
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:15
- 大小:34.60KB
实验文件管理二Word文档格式.docx
《实验文件管理二Word文档格式.docx》由会员分享,可在线阅读,更多相关《实验文件管理二Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
{charfilename[10];
/*文件名*/
charprocode[8];
/*属性*/
intlength;
/*文件长度*/
structufd*nextfile;
/*指向下一个文件*/
}UFD;
typedefstructmfd
{charusername[10];
/*用户名*/
structufd*link;
/*指向该用户的第一个文件*/
}MFD;
typedefstructprotected_flag
{charcode[4];
}PRO;
typedefstructafd/*运行文件目录*/
/*打开文件名*/
charprocode[4];
intrwpointer;
/*读写指针*/
}AFD;
PROflag[3]={"
100"
/*只读*/
"
110"
/*读写*/
001"
/*可执行*/
};
UFD*rw_pointer;
AFD*afd=NULL;
MFDfilesystem[10];
intnum;
/*当前用户个数*/
voiddisplayallfile()
{inti;
UFD*p;
for(i=0;
i<
num;
i++)
{
printf("
用户:
%s目录如下!
\n"
filesystem[i].username);
p=filesystem[i].link;
while(p)
{printf("
\t文件名:
%s\t||"
p->
filename);
文件属性:
procode);
printf("
文件长度:
%d\n\n"
length);
p=p->
nextfile;
}
}
voidinput()/*建立用户文件系统*/
{inti,j;
charfilename[10];
UFD*p1,*p2,*first;
10;
filesystem[i].link=NULL;
用户号码:
);
scanf("
%d"
&
num);
i++)/*输入各用户名称*/
输入第%d个用户名:
i+1);
%s"
i++)/*输入某用户的文件数据*/
j=1;
第%d个用户的文件如下\n"
文件%d:
j);
长度:
if(!
length)
continue;
文件名:
filename);
文件属性(100只读,110读写,001可执行)"
procode);
first=(UFD*)malloc(sizeof(UFD));
first->
nextfile=NULL;
strcpy(first->
filename,filename);
procode,procode);
length=length;
p1=p2=first;
j++;
while
(1)
{printf("
break;
属性(100只读,110读写,001可执行):
p2=(UFD*)malloc(sizeof(UFD));
p2->
strcpy(p2->
p1->
nextfile=p2;
p1=p1->
filesystem[i].link=first;
displayallfile();
intfindusername(char*username)/*返回用户名下标,当I=NUM时,用户不存在*/
i=0;
while(i<
num)
{if(!
strcmp(filesystem[i].username,username))
i++;
returni;
UFD*findfilename(char*filename,UFD*filepointer)
{UFD*k;
k=filepointer;
while(k&
&
strcmp(filename,k->
filename))
k=k->
returnk;
voiddisplayfile(UFD*link)
{UFD*p;
p=link;
p)
{printf("
\n此目录没有该文件!
return;
\n用户文件如下:
%s\t||"
%d\n\n"
p=p->
voidcreatefile()
inti;
UFD*p1,*p2,*newfile;
if(num>
=10)/*用户文件目录已满,创建文件失败*/
用户文件目录已满\n创建文件失败!
输入用户名:
username);
i=findusername(username);
/*返回用户名下标*/
if(i==num)/*如果该用户不存在,且用户个数不小于10,先创建用户再建立用户文件*/
用户不存在,请建立用户!
strcpy(filesystem[num].username,username);
/*创建用户目录*/
num++;
{newfile=(UFD*)malloc(sizeof(UFD));
newfile->
filesystem[num-1].link=newfile;
filesystem[num-1].link->
\n属性:
\n长度:
(filesystem[num-1].link->
length));
\n文件已创建!
else/*为已存在的用户建立文件*/
{p1=p2=filesystem[i].link;
输入文件名:
while(p2)
{if(!
strcmp(p2->
filename,filename))
{printf("
文件名已存在,请输入新文件名!
p1=p2;
p2=p2->
newfile=(UFD*)malloc(sizeof(UFD));
strcpy(newfile->
newfile->
(newfile->
nextfile=newfile;
//
voiddisplayuser()/*显示用户目录*/
{inti;
if(num<
=0)
\n用户目录如下!
"
i++);
\n%s"
voiddeletefile()/*删除文件*/
charusername[10];
UFD*p1,*p2;
\n输入用户名:
//返回用户名下标
if(i>
=num)
用户不存在!
\n删除失败!
return;
else
\n输入文件名:
p1=p2=filesystem[i].link;
while(p2&
{p1=p2;
p2)
\n文件不存在!
else
{if(p1==p2)
filesystem[i].link=p1->
else
p1->
nextfile=p2->
delete(p2);
文件已删除!
displayallfile();
AFD*openfile()
UFD*p=NULL;
AFD*k=NULL;
/*为打开的文件设置了运行文件目录*/
\n用户不存在!
\n不能打开文件!
returnNULL;
else/*用户存在*/
p=findfilename(filename,filesystem[i].link);
p)/*用户文件不存在*/
else{afd=(AFD*)malloc(sizeof(AFD));
strcpy(afd->
filename,p->
procode,p->
afd->
rwpointer=0;
\n文件已打开!
rw_pointer=p;
/*为了读文件保留指针*/
\t文件目录AFD:
/*打开运行文件目录AFD*/
\t文件名:
%s\n"
afd->
\t属性:
\t读写指针:
%d\n"
rwpointer);
returnafd;
voidclosefile()
{if(!
afd)
\n没有文件打开!
delete(afd);
afd=NULL;
\n文件已关闭!
voidreadfile()//
{AFD*p;
p=openfile();
if(strcmp(p->
procode,"
)&
strcmp(p->
))
\nfile:
%s文件不可读!
/*操作*/
已读取文件!
%s\n"
\t属性:
\t读写指针:
%d\n"
rand()%rw_pointer->
closefile();
/*关闭文件*/
voidwritefile()
/*运行文件目录*/
UFD*k;
k=rw_pointer;
%s该文件不能写!
{p->
rwpointer=rand()%k->
length;
k->
length=p->
rwpointer;
/*修改读书指针写回文件*/
\n已完成写操作!
k->
\t长度:
voidexecutefile()
\n该文件不能执行!
\n文件属性为不可执行文件!
else{
\n文件执行完毕!
voidmenu()
------------------------------------------------------------------------------\n"
<
文件管理>
\n"
MENU:
\t\tmenu----------显示菜单\n"
\t\topen----------打开文件\n"
\t\tclose---------关闭文件\n"
\t\tcreate--------创建文件\n"
\t\tread----------读文件\n"
\t\twrite---------写文件\n"
\t\texecute-------执行文件\n"
\t\tdelete--------删除文件\n"
\t\tdisplay--------显示文件列表\n"
\t\texit--------退出\n"
\t注意:
输入时当文件长度为0时表示该用户的文件输入结束!
printf("
voidfileoperation()/*文件基本操作*/
{charstr[10];
intsort;
while
(1)
输入命令:
>
str);
strcmp(str,"
create"
))sort=1;
delete"
))sort=2;
read"
))sort=3;
write"
))sort=4;
execute"
))sort=5;
open"
))sort=6;
close"
))sort=7;
menu"
))sort=8;
display"
))sort=9;
exit"
))sort=10;
sort=0;
switch(sort)
{case1:
createfile();
break;
case2:
deletefile();
case3:
readfile();
case4:
writefile();
case5:
executefile();
case6:
openfile();
case7:
closefile();
case8:
menu();
case9:
case10:
default:
voidmain()
{menu();
input();
fileoperation();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 文件 管理