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

2025-11-19

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;


简单文件系统的实现的实验报告(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:丘区小二型水库除险加固工程施工组织设计 - 图文

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

下载本文档需要支付 7

支付方式:

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

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