好文档 - 专业文书写作范文服务资料分享网站

操作系统实习报告(磁盘文件操作)

天下 分享 时间: 加入收藏 我要投稿 点赞

tname[k]=' ';

if((d=search(pathname,8,&dn,&bn))==false)/*找到目录路径,返回该{ }

/*确认该目录不存在的同时查找空目录项*/

printf(\目录不存在,不能建立\return(false);

目录所在块号dn和项数bn*/

b=-1; fseek(fc,d*64L,SEEK_SET);

fread(buffer2,64L,1,fc); /*读出dnum盘块的内容*/ for(t=0;t<8;t++) {

//P177

if(buffer2[t].name[0]==dname[0]&&buffer2[t].name[1]==dname[1]&&bu

{/*找到名字dname的文件,建立失败*/ }

if(buffer2[t].name[0]=='$'&&b==-1)

b=t;

printf(\文件已经存在,不能建立\\n\return(false);

ffer2[t].name[2]==dname[2]

&&buffer2[t].type[0]==tname[0]&&buffer2[t].type[1]==tname[1])

}/*for*/

if(b==-1)/*没有空目录项,建立失败*/ { }

if((dd=allocate( ))==false)/*分配给建立目录的磁盘盘块dd*/ {

printf(\建立文件失败\\n\return(false);

printf(\目录无空间\\n\return(false);

}

/*填写目录项*/ for(i=0;i<3;i++)

buffer2[b].name[i]=dname[i]; buffer2[b].type[i]=tname[i]; for(i=0;i<2;i++)

buffer2[b].attribute=attribute; buffer2[b].address=dd; buffer2[b].length=0; fseek(fc,d*64L,SEEK_SET); fwrite(buffer2,64L,1,fc); /*填写已打开文件表*/ strcpy(x.name,name); x.attribute=attribute; x.number=dd; x.length=0; x.flag=1;

x.read.dnum=x.write.dnum=dd; x.read.bnum=x.write.bnum=0; //iopen(&x);

}/*建立文件结束*/

int open_file(char *name,int attribute) /*打开文件函数*/ //char *name; //int attribute; {

OFILE x;

int dnum,bnum,last,i,d;

if((d=search(name,4,&dnum,&bnum))==false) { }

printf(\文件不存在,打开操作失败\\n\return(false);

}

fseek(fc,dnum*64L,SEEK_SET);/*fread(buffer2,64,1,fc);

读出对应目录项*/

//P178

if((buffer2[bnum].attribute%2==1)&& attribute==1)/*对只读文件要求{ }

strcpy(x.name,name);

x.attribute=buffer2[bnum].attribute; x.number=buffer2[bnum].address;

x.read.dnum=x.write.dnum=buffer2[bnum].address; x.read.bnum=x.write.bnum=0; x.flag=attribute; if(attribute==1) { }

iopen(&x);/*填写已打开文件表*/

while(d!='\\xff')/*寻找文件末尾*/ {

fseek(fc, d/64*64L, SEEK_SET);

fread(buffer1,64L,1,fc);/*读出dnum项所在FAT*/ last=d;

d=buffer1[dd];/*读出dnum块下一块内容赋给dnum*/ printf(\文件不能写,打开失败\return(false);

写*/

}/*while*/

x.write.dnum=last;/*填写写指针*/ fseek(fc, last*64L, SEEK_SET); fread(buffer1,64L,1,fc);

for(i=0;i<64&&buffer1[i]!='#';i++); x.write.bnum=i;

x.length=(buffer2[bnum].length-1)*64+i;

int close_file(char *name)

/*关闭文件函数*/ //char *name; { }

int Delete(char *name) /*删除文件*/ //char *name;

int i,dnum,bnum; if((i=sopen(name))==-1) { }

if(openfile.file[i].flag==1)/*写文件的追加文件结束符*/ { }

/*在已打开文件表中删除该文件的登记项*/

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

buffer1[openfile.file[i].write.bnum]='#';

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

search(name,4,&dnum,&bnum);/*查找该文件目录位置*/ /*修改目录中的文件长度*/ fseek(fc,dnum*64L, SEEK_SET); fread(buffer2,64,1,fc);

buffer2[bnum].length=openfile.file[i].length/64+1; fseek(fc, dnum*64L, SEEK_SET); fwrite(buffer2,64,1,fc);

printf(\打开的文件中没有该文件,关闭失败\\n\return(false);

if(openfile.length>1)

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

//P179

openfile.length--;

{

int md(char *name)

/*建立目录函数,目录路径名name*/ //char *name; {

int i,j,k,s,d,t,b,dd,dn,bn; int dnum,bnum,t;

if((t=search(name,4,&dnum,&bnum))==false) { }

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

fseek(fc,dnum*64L, SEEK_SET); fread(buffer2,64,1,fc);

buffer2[bnum].name[0]='$';/*将该文件的目录置成空目录*/ fseek(fc,dnum*64L, SEEK_SET); fwrite(buffer2,64,1,fc);

while(t!='\\xff')/*通过FAT查找每一个盘块号,并依次删除*/ { }

dnum=t;

fseek(fc, dnum/64*64, SEEK_SET); fread(buffer1,64,1,fc); t=buffer1[dnumd]; buffer1[dnumd]=0;

fseek(fc, dnum/64*64L, SEEK_SET); fwrite(buffer1,64,1,fc);

printf(\该文件打开,不能删除\\n\return(false);

printf(\文件不存在\\n\return(false);

}/*文件删除结束*/

操作系统实习报告(磁盘文件操作)

tname[k]='';if((d=search(pathname,8,&dn,&bn))==false)/*找到目录路径,返回该{}/*确认该目录不存在的同时查找空目录项*/
推荐度:
点击下载文档文档为doc格式
2sudb8d8yq0088t3wpqi
领取福利

微信扫码领取福利

微信扫码分享