操作系统实验报告模板 联系客服

发布时间 : 星期一 文章操作系统实验报告模板更新完毕开始阅读030dc12d4b35eefdc8d333e1

printf(\ 文件夹./n\ } }

printf(\该目录下共有 %d 个文本文件, %d 个文件夹/n/n\

printf(\-----------\\n\\n\ return 1; }

/*---------在当前目录下删除文件-----------*/

int delfile(char *name) {

int i,temp,j;

//确保当前目录下有该文件,并且记录下它的FCB下标

struct dirFile *dir; //当前目录的指针

if(current==2)

dir=&(osPoint->root); else

dir=(struct dirFile *)(osPoint->data [current-3]);

for(i=1;i

文件 {

if(dir->fcb[i].type==GENERAL && strcmp(dir->fcb[i].fname,name)==0) { break; } }

if(i==BlockFcbCount) {

printf(\当前目录下不存在该文件!\\n\ return 0; } int k;

for(k=0;k

if((openlist->f [k].type = GENERAL)&&

(strcmp(openlist->f [k].fname,name)==0)) {

if(openlist->f[k].fatherBlockNum == current) { break; }

else {

printf(\该文件未在当前目录下!\\n\

return 0; } } }

if(k!=OPEN_MAX) {

close(name); }

//从打开列表中删除 temp=i;

/*开始删除文件操作*/

j = dir->fcb [temp].currentBlockNum ; //查找盘块号j

osPoint->FAT1[j]=osPoint->FAT2[j]=0; //fat1,fat2表标记为空白 char *p=osPoint->data[j - 3]; memset(p,0,BlockSize); //清除原文本文件的内容

dir->fcb[temp].initialize(); //type=0; //标记该目录项为空文件

printf(\---------------\\n\\n\

return 1; }

/*--------System exit---------------------*/ int exit() {

//将所有文件都关闭

//保存到磁盘上C:/myfiles fp=fopen(FilePath,\

fwrite(BaseAddr,sizeof(char),DiskSize,fp); fclose(fp);

//释放内存上的虚拟磁盘 free(osPoint);

//释放用户打开文件表 delete openlist;

printf(\------------\\n\\n\ return 1; }

/*-------------在指定的文件里记录信息---------------*/ int write(char *name) { int i;

char *startPoint,*endPoint; //在打开文件列表中查找 file(还需要考虑同名不同目录文件的情况!!!)

for(i=0;i

if(strcmp(openlist->f [i].fname,name)==0 ) {

if(openlist->f[i].fatherBlockNum ==current) { break; } else {

printf(\该文件处于打开列表中,本系统只能改写当前目录下文件!\\n\

return 0; } } }

if(i==OPEN_MAX) {

printf(\该文件尚未打开,请先打开后写入信息!!\\n\ return 0; }

int active=i; int fileStartNum =

openlist->f[active].currentBlockNum - 3 ;

startPoint =

osPoint->data[fileStartNum];

endPoint = osPoint->data[fileStartNum + 1];

printf(\请输入文本以Ctrl D号结束:\\t\

char input;

while(((input=getchar())!=4)) {

if(startPoint < endPoint-1) {

*startPoint++ = input; } else {

printf(\达到单体文件最大容量!\

*startPoint++ = 4; break; } } return 1; }

/*---------选择一个打开的文件读取信息----------*/ int read(char *file) {

int i,fileStartNum;

char *startPoint,*endPoint; //struct dirFile *dir;

//在打开文件列表中查找 file(还需要考虑同名不同目录文件的情况!!!) for(i=0;i

if(strcmp(openlist->f [i].fname,file)==0 ) {

if(openlist->f[i].fatherBlockNum ==current) { break; } else {

printf(\该文件处于打开列表中,本系统只能阅读当前目录下文件!\\n\

return 0; } } }

if(i==OPEN_MAX) {

printf(\该文件尚未打开,请先打开后读取信息!\\n\ return 0; }

int active=i;

//计算文件物理地址 fileStartNum =

openlist->f[active].currentBlockNum - 3 ; startPoint =

osPoint->data[fileStartNum];

endPoint = osPoint->data[fileStartNum + 1];

//end_dir=(struct dirFile *)[BlockSize-1];

//q=(char *)end_dir;

printf(\该文件的内容为: \ while((*startPoint)!=4&& (startPoint < endPoint)) {

putchar(*startPoint++); }

printf(\ return 1; }

/*当前目录下添加一个打开文件*/ int open(char *file)//打开文件 {