文件系统实验报告Word文档格式.docx

上传人:b****2 文档编号:1476047 上传时间:2023-04-30 格式:DOCX 页数:20 大小:63.66KB
下载 相关 举报
文件系统实验报告Word文档格式.docx_第1页
第1页 / 共20页
文件系统实验报告Word文档格式.docx_第2页
第2页 / 共20页
文件系统实验报告Word文档格式.docx_第3页
第3页 / 共20页
文件系统实验报告Word文档格式.docx_第4页
第4页 / 共20页
文件系统实验报告Word文档格式.docx_第5页
第5页 / 共20页
文件系统实验报告Word文档格式.docx_第6页
第6页 / 共20页
文件系统实验报告Word文档格式.docx_第7页
第7页 / 共20页
文件系统实验报告Word文档格式.docx_第8页
第8页 / 共20页
文件系统实验报告Word文档格式.docx_第9页
第9页 / 共20页
文件系统实验报告Word文档格式.docx_第10页
第10页 / 共20页
文件系统实验报告Word文档格式.docx_第11页
第11页 / 共20页
文件系统实验报告Word文档格式.docx_第12页
第12页 / 共20页
文件系统实验报告Word文档格式.docx_第13页
第13页 / 共20页
文件系统实验报告Word文档格式.docx_第14页
第14页 / 共20页
文件系统实验报告Word文档格式.docx_第15页
第15页 / 共20页
文件系统实验报告Word文档格式.docx_第16页
第16页 / 共20页
文件系统实验报告Word文档格式.docx_第17页
第17页 / 共20页
文件系统实验报告Word文档格式.docx_第18页
第18页 / 共20页
文件系统实验报告Word文档格式.docx_第19页
第19页 / 共20页
文件系统实验报告Word文档格式.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

文件系统实验报告Word文档格式.docx

《文件系统实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《文件系统实验报告Word文档格式.docx(20页珍藏版)》请在冰点文库上搜索。

文件系统实验报告Word文档格式.docx

•文件名

•文件描述符序号

3.对文件的操作:

文件系统需提供如下函数;

create,destroy,open,read,write。

•create(filename):

根据指定的文件名创建新文件。

•destroy(filename):

删除指定文件。

•open(filename):

打开文件。

该函数返回的索引号可用于后续的read,write,lseek,或close操作。

•close(index):

关闭制定文件。

•read(index,mem_area,count):

从指定文件顺序读入count个字节mem_area指定的内存位置。

读操作从文件的读写指针指示的位置开始。

•write(index,mem_area,count):

把mem_area指定的内存位置开始的count个字节顺序写入指定文件。

写操作从文件的读写指针指示的位置开始。

•lseek(index,pos):

把文件的读写指针移动到pos指定的位置。

pos是一个整数.表示从文件开始位置的偏移量。

文件打开时.读写指针自动设置为0。

每次读写操作之后.它指向最后被访问的字节的下一个位置。

lseek能够在不进行读写操作的情况下改变读写指针能位置。

•directory:

列表显示所有文件及其长度。

三.实验过程

创建文件create:

此时显示文件中的文件:

文件的删除delete:

打开文件(open):

文件的写操作(write):

读文件(read):

关闭文件(close):

退出系统(exit):

四.实验代码

#include<

stdio.h>

malloc.h>

stdlib.h>

string.h>

#defineNULL0

typedefstructmdf{//MDF结构体

charusername[20];

//用户名

charfilename[20];

//文件名

structmdf*next;

}MDF;

typedefstructufd{//UFD结构体

intprotect;

//文件保护码

unsignedintlength;

//文件长度

structufd*next;

}UFD;

typedefstructafd{//AFD结构体

unsignedintpoint;

//文件读写指针

structafd*next;

}AFD;

MDF*pmdf;

//全局链表头指针

UFD*pufd;

AFD*pafd;

charUserUFD[20];

//已经登陆成功的用户名

voidinitMDF()//初始化MDF表

{

FILE*fp;

pmdf=(MDF*)malloc(sizeof(MDF));

MDF*p=pmdf;

if((fp=fopen("

MDF"

"

r+"

))==NULL){//打开MDF文件

puts("

theMDFcannotopen!

\n"

);

exit

(1);

}

while(!

feof(fp)){//把MDF文件中的内容装入链表

p->

next=(MDF*)malloc(sizeof(MDF));

p=p->

next;

fscanf(fp,"

%s"

p->

username);

filename);

p->

next=NULL;

fclose(fp);

}

voidprintUFD()//打印MDF表

UFD*p=pufd->

puts("

文件名\t\t保护码\t\t文件长度\n"

while(p){

printf("

\t\t%d"

p->

protect);

\t\t%d\n"

length);

p=p->

voidinitUFD(char*name)//初始化UFD表

pufd=(UFD*)malloc(sizeof(UFD));

UFD*p=pufd;

if((fp=fopen(name,"

))==NULL){

theUFDcannotopen!

feof(fp)){//建立UFD链表

next=(UFD*)malloc(sizeof(UFD));

%d"

&

p->

fgetc(fp);

intcheckuser()//检测登陆的用户名

while

(1){

请输入用户名:

\n"

scanf("

username);

MDF*p=pmdf;

while(p){

if(strcmp(username,p->

username)==0){

strcpy(UserUFD,p->

initUFD(p->

printUFD();

return1;

}

p=p->

}

同户名不存在\n"

voidinitAFD()//初始化AFD

pafd=(AFD*)malloc(sizeof(AFD));

pafd->

boolcreate()//创建文件命令

AFD*pa=pafd;

请输入要创建的文件名:

scanf("

filename);

if(strcmp(filename,p->

filename)==0){

puts("

此文件已经存在了!

return0;

if(!

next)

break;

p=p->

p=p->

strcpy(p->

filename,filename);

protect=2;

length=0;

while(pa->

next){//创建文件后加入到AFD

pa=pa->

pa->

next=(AFD*)malloc(sizeof(AFD));

pa=pa->

strcpy(pa->

filename,filename);

point=0;

return1;

bool_delete()//删除文件命令

请输入要删除的文件名:

UFD*temp;

while(p->

next){

next->

temp=p->

p->

next=p->

free(temp);

printf("

文件%s删除成功!

return1;

要删除的文件不存在!

return0;

boolopen()//打开文件命令

unsignedintprotect;

请输入要打开的文件名:

请输入要打开的文件保护类型:

AFD*pa=pafd->

while(pa){

if(strcmp(filename,pa->

文件%s已经打开!

filename);

pa->

pa=pa->

if(!

pa)

pa=pafd;

pa->

pa=pa->

strcpy(pa->

filename,p->

protect=protect;

if(protect==1)

pa->

else

point=p->

length;

next=NULL;

要打开的文件不存在!

voidclose()//关闭文件命令

UFD*pu=pufd->

请输入要关闭的文件名:

AFD*p=pafd;

AFD*temp;

while(p&

&

if(temp->

protect==2){

while(pu){

if(strcmp(temp->

filename,pu->

pu->

length=temp->

point;

break;

}

pu=pu->

}

文件%s关闭成功!

return;

要关闭的文件没有被打开!

intread()//读文件命令

AFD*p=pafd->

请输入要读的文件名:

请输入要读的长度\n"

point+=length;

文件%s读取成功!

读取失败文件没有打开过!

intwrite()//写文件命令

请输入要写的文件名:

if(p->

protect!

=2){

printf("

文件%s不可写!

return0;

请输入要写的长度\n"

scanf("

文件%s写入成功!

写入失败文件没有打开过!

voiddestroy()//释放内存

MDF*pm=pmdf;

while(pm){

pmdf=pmdf->

free(pm);

pm=pmdf;

while(pa){

pafd=pafd->

free(pa);

pa=pafd;

UFD*pu=pufd;

while(pu){

pufd=pufd->

free(pu);

pu=pufd;

voidsaveUFD()//保存UFD文件

if((fp=fopen(UserUFD,"

w"

fprintf(fp,"

%s%s"

filename,"

\t\t"

%d%s"

protect,"

voidexit()//推出系统

if(pa->

while(pu){

if(strcmp(pa->

pu->

length=pa->

break;

pu=pu->

pa=pa->

saveUFD();

printUFD();

destroy();

voidoperate()//命令识别

charcommand[20];

charname[][8]={"

create"

delete"

open"

close"

"

read"

write"

exit"

};

请输入命令:

command);

if(strcmp(command,name[0])==0)

create();

elseif(strcmp(command,name[1])==0)

_delete();

elseif(strcmp(command,name[2])==0)

open();

elseif(strcmp(command,name[3])==0)

close();

elseif(strcmp(command,name[4])==0)

read();

elseif(strcmp(command,name[5])==0)

write();

elseif(strcmp(command,name[6])==0){

exit();

return;

}else

无效命令.请重新输入:

voidprint()

文件系统\n"

***使用说明***:

本文件系统共有三个用户分别是user1user2user3\n\

系统命令有create,delete,open,close,read,write,exit\

\nexit----------------------------------------退出系统"

intmain()

print();

initMDF();

checkuser();

initAFD();

operate();

//命令识别

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2