77范文网 - 专业文章范例文档资料分享平台

简单文件系统的实现的实验报告(3)

来源:网络收集 时间:2019-03-04 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

free(now); fclose(fp); } /**/ /* 原型声明: 功能描述: 输入: 输出:

函数功能实现算法描述: */

void my_exitsys() {

FILE *fp; fcb *rootfcb;

char text[MAX_TXT_SIZE]; while(curfd)

curfd=my_close(curfd);

void my_exitsys() 退出文件系统 无 无

if(openfilelist[curfd].fcbstate) { }

fp=fopen(filename,\\ fwrite(myvhard,SIZE,1,fp); free(myvhard); fclose(fp); } /* 原型声明: 功能描述:

int do_read(int fd,int len,char *text)

实际读文件函数,读出指定文件中从指定指针开始的长度 为len的内容到用户空间的text中

openfilelist[curfd].count=0;

do_read(curfd,openfilelist[curfd].length,text); rootfcb=(char *)text;

rootfcb->length=openfilelist[curfd].length; openfilelist[curfd].count=0;

do_write(curfd,text,openfilelist[curfd].length,2);

输入: 输出:

实际读出的字节数 函数功能实现算法描述: */

int do_read(int fd,int len,char *text) {

unsigned char *buf; unsigned short bknum; int off,i,lentmp; unsigned char *bkptr; char *txtmp,*p; fat *fat1,*fatptr;

fat1=(fat *)(myvhard+BLOCKSIZE); lentmp = len; txtmp=text; /*

申请1024B空间作为缓冲区buffer */

buf=(unsigned char *)malloc(1024); if(buf==NULL) { }

off = openfilelist[fd].count; bknum = openfilelist[fd].first; fatptr = fat1+bknum; while(off >= BLOCKSIZE) { }

off=off-BLOCKSIZE; bknum=fatptr->id; fatptr=fat1+bknum; if(bknum == END) { }

printf(\return -1; printf(\return -1; fd len

open()函数的返回值,文件的描述符 要求从文件中读出的字节数

text 指向存放读出数据的用户区地址

bkptr=(unsigned char *)(myvhard+bknum*BLOCKSIZE); //strncpy(buf,bkptr,BLOCKSIZE); for(i=0;i

while(len > 0) {

if(BLOCKSIZE-off > len) { } else {

//strncpy(txtmp,buf+off,BLOCKSIZE-off); //len=len-(BLOCKSIZE-off);

//openfilelist[fd].count+=(BLOCKSIZE-off); for(p=buf+off;p

//txtmp+=(BLOCKSIZE-off); bknum =fatptr->id; fatptr = fat1+bknum;

bkptr=(unsigned char *)(myvhard+bknum*BLOCKSIZE); //strncpy(buf,bkptr,BLOCKSIZE); for(i=0;i

buf[i]=bkptr[i]; *txtmp=*p; len--;

openfilelist[fd].count++; //strncpy(txtmp,buf+off,len); //len=len-len;

//openfilelist[fd].count+=len; //off+=len;

for(p=buf+off;len>0;p++,txtmp++) { }

*txtmp=*p; len--; off++;

openfilelist[fd].count++;

buf[i]=bkptr[i];

}

}

}

free(buf); return lentmp-len; } /**/ /* 原型声明: 功能描述: 输入:

fd len

打开文件的id 要读出字符的个数 返回实际读的字符的个数

int my_read(int fd,int len) 读文件函数

输出:

函数功能实现算法描述: */

int my_read(int fd,int len) {

char text[MAX_TXT_SIZE]; if(fd > MAX_OPEN_FILE) { }

openfilelist[curfd].count=0; if(do_read(fd,len,text)>0) { } else { }

return len; } /**/ /*

printf(\return -1; text[len]='\\0'; printf(\

printf(\return -1;

原型声明: 功能描述: 输入:

fd

int do_write(int fd,char *text,int len,char wstyle) 实际写文件函数

当前打开的文件的id

text 指向要写入的内容的指针 len

本次要写入字节数

wstyle写方式

实际写入的字节数

输出:

函数功能实现算法描述: */

int do_write(int fd,char *text,int len,char wstyle) {

unsigned char *buf; unsigned short bknum;

int off,tmplen=0,tmplen2=0,i,rwptr; unsigned char *bkptr,*p; char *txtmp,flag=0; fat *fat1,*fatptr;

fat1=(fat *)(myvhard+BLOCKSIZE); txtmp=text; /*

申请临时1024B的buffer */

buf=(unsigned char *)malloc(BLOCKSIZE); if(buf==NULL) { }

rwptr = off = openfilelist[fd].count; bknum = openfilelist[fd].first; fatptr=fat1+bknum; while(off >= BLOCKSIZE ) {

off=off-BLOCKSIZE; bknum=fatptr->id; if(bknum == END) {

bknum=fatptr->id=findFree(); if(bknum==END) return -1; fatptr=fat1+bknum; printf(\return -1;

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库简单文件系统的实现的实验报告(3)在线全文阅读。

简单文件系统的实现的实验报告(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/495517.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: