文件系统课程设计报告(4)

2025-04-30

} else {

copy(&openfile.file[i], &openfile.file[openfile.length - 1]); openfile.length--;

} }

int iopen(ofile *x)//向已打开文件列表中插入文件x->name {

int i;

i = sopen(x->name); if(i!=-1) { }

else if(openfile.length == n) { } else {

printf(\已打开文件表已满\return false;

printf(\文件已经打开\\n\return false;

15

}

}

copy(&openfile.file[openfile.length], x); openfile.length ++; return true;

int allocate()//分配一个磁盘块,返回块号 {

int i;

fseek(fc, 0, SEEK_SET);//将模拟磁盘的文件指针移至模拟磁盘FAT表 fread(buffer1,64L, 1, fc); for(i = 3; i < 63; i++) {

if(buffer1[i] == 0)//FAT中的第i项为0,分配第i块磁盘块,修改FAT表,并且写回磁盘

}

{ }

buffer1[i] = 255; fseek(fc, 0, SEEK_SET); fwrite(buffer1, 64L, 1, fc); return i; //返回磁盘号

fread(buffer1, 64L, 1, fc);//将FAT表中第二个磁盘块读入模拟缓冲buffer1

for(i = 0; i < 63; i++)

16

{

if(buffer1[i] == 0)//AT中的第i项为0,分配第i+64块磁盘块,修改FAT表,并且写回磁盘 { buffer1[i] = 255;

fseek(fc, -64L, SEEK_CUR); fwrite(buffer1, 64L, 1, fc);

return i + 64; //返回磁盘号

}

}

printf(\已经没有磁盘空间\\n\ return false;

}

int read_file(char *name, int length)//读取文件,文件名为name, 为length {

int i, t; char ch;

if((i=sopen(name)) == -1) { printf(\文件未打开或不存在\\n\

return false; }

if(openfile.file[i].flag == 1)

17

读取长度 {

printf(\文件以写方式打开,不能读\\n\ return false;

} t = 0;

fseek(fc, openfile.file[i].read.dnum * 64L, SEEK_SET); fread(buffer1, 64, 1, fc);

while(t < length && buffer1[openfile.file[i].read.bnum] != '#') {

putchar(buffer1[openfile.file[i].read.bnum]); //读出一个字符显示在屏幕上

if((t+1)d ==0) {

putchar('\\n');

}

openfile.file[i].read.bnum ++;//修改读指针

if(openfile.file[i].read.bnum >= 64) //一块读完,读取下一块 {

fseek(fc,openfile.file[i].read.dnum/64*64, SEEK_SET);

fread(buffer1, 64, 1, fc);

openfile.file[i].read.dnum=buffer1[openfile.file[i].read.dnumd];

openfile.file[i].read.bnum = 0; //修改读指针

fseek(fc, openfile.file[i].read.dnum *64L, SEEK_SET); fread(buffer1, 64, 1, fc);

18

} t++;

} }

int write_file(char *name, char *buff, int length) //name 文件路径名

//buff 存放准备写入磁盘的内容 //length 写入内容的长度 {

int i, t, dd;

if((i=sopen(name))== -1) { }

if(openfile.file[i].flag == 0) { } t = 0;

fseek(fc,openfile.file[i].write.dnum*64L, SEEK_SET); fread(buffer1,64,1,fc);

printf(\文件以只读方式打开,不能写\\n\return false;

printf(\文件未打开或不存在\\n\return false;

19


文件系统课程设计报告(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:综合应急预案

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219