操作系统4(2)

2020-02-20 14:04

MAP=(struct map *)(file+(FATNUM+1)*BLOCK_SIZE); //初始化位示图 init(FAT);

FAT->id[0]=9872;

filedir=(struct DIR *)(file+(FATNUM+1+2)*BLOCK_SIZE);

FAT->id[128]=-1; FAT->id[0]=9872-1;

strcpy(filedir->list[0].fname,\strcpy(filedir->list[0].exname,\filedir->list[0].fnum=currentdir; filedir->list[0].length=0;

strcpy(filedir->list[1].fname,\strcpy(filedir->list[1].exname,\filedir->list[1].fnum=currentdir; filedir->list[1].length=0;

fp=fopen(FilePath,\

fwrite(file,sizeof(char),DISK_SIZE,fp); fclose(fp);

printf(\初始化已经完成,现在可以进行操作了!\\n\\n\ } /*

*创建子目录 */

int mkdir(char *str) {

int i,j;

//当前目录指针地址

//将要创建的FAT号

//将要创建的目录块号

int blockdir;

//目录块内编号 struct fatid *flagid;

struct DIR *dir; //当前目录指针 struct map *MAP; struct fatid *FAT; if(strcmp(str,\{ }

dir=(struct DIR *)(file+(currentdir)*BLOCK_SIZE); MAP=(struct map *)(file+(FATNUM+1)*BLOCK_SIZE); FAT=(struct fatid *)(file+BLOCK_SIZE);

for(i=DATABEG+1;imaplist[i]==0) }

if(i>BLOCK_NUM) { }

//map 置即已用

MAP->maplist[i]=1;

printf(\内存不足\\n\return 0;

break;

printf(\目录名称不能为空\\n\return 0;

dir=(struct DIR *)(file+(currentdir)*BLOCK_SIZE);

for(i=2;i

if(strcmp(dir->list[i].fname,str)==0) {

}

}

}

printf(\目录下有同名文件夹\\n\return 0;

for(i=2;i

if(strcmp(dir->list[i].fname,\ { }

printf(\内存不足\\n\return 0;

break;

//有空的目录块且无重名,第一版本的时

候与上面的循环放在一起,存在一个情况是前面的建立的目录删除后,直接被同名的覆盖了

if(i>LIST_SIZE)

flagid=(struct fatid *)(file+BLOCK_SIZE); //fat 首位地址

for(j=DATABEG+1;j

}

if(flagid->id[j]==0) { }

blockdir=j; break;

strcpy(dir->list[i].fname,str); dir->list[i].fnum=blockdir; strcpy(dir->list[i].exname,\dir->list[i].length=0;

dir=(struct DIR *)(file+blockdir*BLOCK_SIZE); //为新目录项创建根目录 strcpy(dir->list[0].fname,\strcpy(dir->list[0].exname,\dir->list[0].fnum=blockdir; dir->list[0].length=0; strcpy(dir->list[1].fname,\strcpy(dir->list[1].exname,\

} /*

dir->list[1].fnum=currentdir; dir->list[1].length=0;

flagid->id[j]=-1; //修改FAT 目录尾部 FAT->id[0]=FAT->id[0]-1;

printf(\已经成功创建目录%s \\n\return 0;

*显示目录 */

int listshow() {

for(i=0;i

if(dir->list[i].length==0&&(strcmp(dir->list[i].fname,\ { }

if(dir->list[i].length!=0&&strcmp(dir->list[i].fname,\ { }

fl[sumfile]=i;

sumfile++;

//为目录的

dr[sumdir]=i; sumdir++;

//为目录的

dir=(struct DIR *)(file+currentdir*BLOCK_SIZE); struct DIR *dir;

int i,sumfile,sumdir,fl[100],dr[100];//fl 为文件的号数,dr为目录的号数 sumfile=sumdir=0;

}

for(i=0;i

printf(\ %s %s文件\\n\

printf(\

printf(\在该目录下共有%d 个文件, %d 个文件夹\\n\\n\return 0;

/*

*删除子目录 */

int rmdir(char *str) {

for(i=2;i

if(strcmp(dir->list[i].fname,str)==0) {

break;

//找到要删除的子目录

FAT=(struct fatid *)(file+BLOCK_SIZE); dir=(struct DIR *)(file+currentdir*BLOCK_SIZE);

//当前目录指针

MAP=(struct map *)(file+(FATNUM+1)*BLOCK_SIZE); char c='a'; int m=2;

//做用户交互

//从第三个子目录项开始搜索要删除的目录项情况

struct fatid *FAT; struct DIR *dir; struct DIR *flagdir;

//标记目录块

int flag=0;

//FAT号

//目录块

int i;

int blocknum;


操作系统4(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:基于PIC16F887单片机的数字钟完整c程序代码

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

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