云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 操作系统实验报告模板

操作系统实验报告模板

  • 62 次阅读
  • 3 次下载
  • 2025/5/3 6:03:26

if(current==2)

dir=&(osPoint->root); else

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

/*--------为了避免该目录下同名文件夹--------*/

for(i = 1;i

if(dir->fcb[i].type==DIRECTORY &&

strcmp(dir->fcb[i].fname,sonfname)==0 ) {

printf(\该文件夹下已经有同名的文件夹存在了!\\n\ return 0; } }

//查找空白fcb序号

for(i=1;i

if(dir->fcb[i].type==NULL) break; }

if(i==BlockFcbCount) {

printf(\该目录已满!请选择新的目录下创建!\\n\

return 0; }

temp=i;

for(i = 3;i < BlockCount;i++) {

if(osPoint->FAT1[i] == 0) break; }

if(i == BlockCount) {

printf(\磁盘已满!\\n\ return 0; }

iFAT=i;

/*-------------接下来进行分配----------*/

osPoint->FAT1[iFAT]=osPoint->FAT2[iFAT] = 2; //2表示分配给下级目录文件 //填写该分派新的盘块的参数 strcpy(dir->fcb[temp].fname,sonfname); dir->fcb[temp].type=DIRECTORY;

dir->fcb[temp].fatherBlockNum=current; dir->fcb[temp].currentBlockNum=iFAT;

//初始化子目录文件盘块 dir=(struct dirFile*)(osPoint->data [iFAT-3]); //定位到子目录盘块号 dir->init (current,iFAT,sonfname);//iFAT是要分配的块号,这里的current用来指要分配的块的父块号

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

/*-------删除当前目录下的文件夹--------*/ int rmdir(char *sonfname) {

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==DIRECTORY

&&

strcmp(dir->fcb[i].fname,sonfname)==0) { break; } }

temp=i;

if(i==BlockFcbCount) {

printf(\当前目录下不存在该子目录!\\n\ return 0; }

j = dir->fcb[temp].currentBlockNum; struct dirFile *sonDir; //当前子目录的指针

sonDir=(struct dirFile *)(osPoint->data [ j - 3]);

for(i=1;i

if(sonDir->fcb[i].type!=NULL) {

printf(\该文件夹为非空文件夹,为确保安全,请清空后再删除!\\n\ return 0;

} }

/*开始删除子目录操作*/

osPoint->FAT1[j] = osPoint->FAT2[j]=0; //fat清空

char *p=osPoint->data[j-3]; //格式化子目录

memset(p,0,BlockSize);

dir->fcb[temp].initialize(); //回收子目录占据目录项

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

/*-----------在当前目录下创建文本文件---------------*/ int create(char *name) {

int i,iFAT;//temp,

int emptyNum = 0,isFound = 0; //空闲目录项个数

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 == NULL && isFound == 0) {

emptyNum = i; isFound = 1; }

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

printf(\无法在同一目录下创建同名文件!\\n\ return 0; } }

if(emptyNum == 0) {

printf(\已经达到目录项容纳上限,无法创建新目录!\\n\ return 0; }

//查找FAT表寻找空白区,用来分配磁盘块号j

for(i = 3;i

{

if(osPoint->FAT1[i]==0) break; }

if(i==BlockCount) {

printf(\磁盘已满!\\n\ return 0; } iFAT=i;

/*------进入分配阶段---------*/ //分配磁盘块 osPoint->FAT1[iFAT] = osPoint->FAT2[iFAT] = 1;

/*-----------接下来进行分配----------*/

//填写该分派新的盘块的参数

strcpy(dir->fcb[emptyNum].fname,name); dir->fcb[emptyNum].type=GENERAL;

dir->fcb[emptyNum].fatherBlockNum=current;

dir->fcb[emptyNum].currentBlockNum=iFAT;

dir->fcb[emptyNum].size =0; char* p = osPoint->data[iFAT -3]; memset(p,4,BlockSize);

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

/*-------查询子目录------------*/ int listshow() {

int i,DirCount=0,FileCount=0; //搜索当前目录

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) { //查找普通文件 FileCount++; printf(\ 文本文件./n\ }

if(dir->fcb[i].type==DIRECTORY) { //查找目录文件 DirCount++;

搜索更多关于: 操作系统实验报告模板 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

针 if(current==2) dir=&(osPoint->root); else dir=(struct dirFile *)(osPoint->data [current-3]); /*--------为了避免该目录下同名文件夹--------*/ for(i = 1;ifcb[i].type==DIRECTORY && strcmp(dir->fcb[i].fname,sonfname)==0 ) { printf(\该文件夹下已经有同名的

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com