版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、#include using namespace std;#define BLKSIZE 512.n);printf(WARNING:ALL DATA ON THIS FILESYSTEM WILL BE LOST!n);printf(Proceed with Format(Y/N);scanf(%c, &choice);getchar();if(choice = y) | (choice = Y)if(fp=fopen(image_name, w+b) = NULL)printf(Cant create file %sn, image_name);exit(-1);for(i = 0; i
2、BLKSIZE; i+)fputc(0, fp);= 0;strcpy, /);= d;strcpy, /);= 0;= 0;0 = -1;1 = -1;fwrite(&inode, sizeof(Inode), 1, fp);= -1;for(i = 0; i 31; i+)fwrite(&inode, sizeof(Inode), 1, fp);for(i = 0; i 512)add1 = inode_arraynum.address1;if(fp = fopen(image_name, r+b) = NULL)printf(Cant open file %s.n, image_name
3、);exit(-1);fseek(fp, BLKSIZE+INODESIZE*INODENUM +add0*BLKSIZE, SEEK_SET);ch = fgetc(fp);for(i=0; (i len) & (ch != 0) & (i = 512)fseek(fp,BLKSIZE+INODESIZE*INODENUM+add1*BLKSIZE,SEEK_SET);ch = fgetc(fp);for(; (i len) & (ch != 0); i+)tempi = ch;ch = fgetc(fp);tempi = 0;fclose(fp);ddress0;len = inode_a
4、rraynum.length;if(fp = fopen(image_name, r+b) = NULL)printf(Cant open file %s.n, image_name);exit(-1);fseek(fp, BLKSIZE+INODESIZE*INODENUM+add0*BLKSIZE, SEEK_SET);for(i=0; (ilen)&(tempi!=0)&(i 512); i+)fputc(tempi, fp);if(i = 512)add1 = inode_arraynum.address1;fseek(fp,BLKSIZE+INODESIZE*INODENUM+add
5、1*BLKSIZE,strcat(path,inode_arrayn.file_name);SEEK_SET);for(; (i len) & (tempi != 0); i+)fputc(tempi, fp);fputc(0, fp);fclose(fp);num = 0)strcpy(path,;elsestrcpy(path,;m=0;n=inum_cur;while(m != inum_cur)while(inode_arrayn.iparent != m)n = inode_arrayn.iparent;strcat(path,/);m = n;n = inum_cur;printf
6、(%s$,path);或者 cd dir1)void cd(void)int i;if(argc != 2)printf(Command cd must have two args. n);return ;if(!strcmp(argv1, .)inum_cur = inode_arrayinum_cur.iparent;elsefor(i = 0; i 0)&(inode_arrayi.type=d)&(inode_arrayi.iparent=inum_cur)&!strcmp(inode_arrayi.file_name,argv1)&!strcmp(inode_arrayi.user_
7、name,)break;if(i = INODENUM)printf(This directory isnt exsited.n);elseinum_cur = i;n);return ;num 0) &(inode_arrayi.iparent = inum_cur)&!strcmp(inode_arrayi.user_name,)if(inode_arrayi.type = d)dcount+;printf(%-20sn,inode_arrayi.file_name);elsefcount+;bcount+=inode_arrayi.length;printf(%-20s%12dbytes
8、n,inode_arrayi.file_name,inode_arrayi.length);printf(n%d file(s)%11dbytesn,fcount,bcount);printf(%d dir(s) %11d bytesFreeSpacen,dcount,1024*1024-bcount);n);return ;num 0) break;if(i = INODENUM)printf(Inode is full.n);exit(-1);inode_arrayi.inum = i;strcpy(inode_arrayi.file_name, argv1);inode_arrayi.t
9、ype = d;strcpy(inode_arrayi.user_name,;inode_arrayi.iparent = inum_cur;inode_arrayi.length = 0;save_inode(i);n);return ;for(i = 0; i 0) &(inode_arrayi.type = f) &!strcmp(inode_arrayi.file_name, argv1)printf(This file is exsit.n);return ;if(i = FILENUM)(inode_arrayi.type = f) &for(i = 0; i INODENUM;
10、i+)if(inode_arrayi.inum 0) break;if(i = INODENUM)printf(Inode is full.n);exit(-1);inode_arrayi.inum = i;strcpy(inode_arrayi.file_name, argv1);inode_arrayi.type = f;strcpy(inode_arrayi.user_name, ;inode_arrayi.iparent = inum_cur;inode_arrayi.length = 0;save_inode(i);n);return ;for(i = 0; i 0) &!strcm
11、p(inode_arrayi.file_name,argv1)&!strcmp(inode_arrayi.user_name,)break;if(i = INODENUM)printf(The file you want to open doesnt exsited.n);return ;inum = i;printf(Please input open mode:(1: read, 2: write, 3: read and write):);scanf(%d, &mode);getchar();if(mode 3)printf(Open mode is wrong.n);return;fo
12、r(i = 0; i FILENUM; i+)if(file_arrayi.inum 0) break;printf(The file table is full, please close some file.n);return ;filenum = i;file_arrayfilenum.inum = inum;strcpy(file_arrayfilenum.file_name,inode_arrayinum.file_name);file_arrayfilenum.mode = mode;printf(Open file %s by , file_arrayfilenum.file_n
13、ame);if(mode = 1) printf(read only.n);else if(mode = 2) printf(write only.n);else printf(read and write.n);n);return;for(i = 0; i 0) &!strcmp(file_arrayi.file_name,argv1) break;for(i = 0; i 0)read_blk(inum);for(i = 0; (i 0)&!strcmp(file_arrayi.file_name,argv1) break;if(i = FILENUM)printf(Open %s fir
14、st.n, argv1);return ;else if(file_arrayi.mode = 1)printf(Cant write %s.n, argv1);return ;inum = file_arrayi.inum;printf(The length of %s:%dn, inode_arrayinum.file_name, inode_arrayinum.length);if(inode_arrayinum.length = 0)i=0;inode_arrayinum.address0 = get_blknum();printf(Input the data(CTRL+Z to e
15、nd):n);while(i 512)inode_arrayinum.address1 = get_blknum();save_inode(inum);write_blk(inum);elseprintf(This file cant be written.n);n);return ;for(i = 0; i 0) &!strcmp(file_arrayi.file_name, argv1) break;if(i = FILENUM)printf(This file doesnt be opened.n);return ;elsefile_arrayi.inum = -1;printf(Clo
16、se %s success!n, argv1);num = -1;if(inode_arrayi.length 0)release_blk(inode_arrayi.address0);if(inode_arrayi.length = 512)release_blk(inode_arrayi.address1);save_inode(i);n);return ;int n,t,i;stack istk;for(i = 0; i =0) &(inode_arrayi.iparent = inum_cur)&(!strcmp(inode_arrayi.file_name,argv1)&(!strc
17、mp(inode_arrayi.user_name,)n=inode_arrayi.inum;break;if(i=INODENUM) puts(Directory ERROR);else(n);while(!()t=();();del(t);for(i = 0; i =0)&(inode_arrayi.iparent = t)(i);/ 功能 : 退出当前用户 (logout)/ 功能 : 显示错误void logout()printf(Do you want to exit this user(y/n);scanf(%c, &choice);getchar();if(choice = y)
18、 | (choice = Y)printf(nCurrent user has exited!n);login();return ;/ 功能 : 退出文件系统 (quit)void quit()printf(Do you want to exist(y/n):);scanf(%c, &choice);getchar();if(choice = y) | (choice = Y)exit(0);void errcmd()printf(Command Error!n);/ 清空内存中存在的用户名void free_user()int i;for(i=0;i10;i+)i=0;/功能 : 循环执行用户输入的命令, 直到 logout/help, cd, dir, mkdir, creat, open,read,write,close, delete, logout, clear, format,quit void command(void)char cmd100;system(cls);dopathset();gets(cmd);switch(analyse(cmd)case 0:help(); break;cd(); break;dir
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年国际贸易产品代工生产合同格式样本3篇
- 2024深圳互联网平台服务合同范本3篇
- 2024版建造师兼职聘用合同
- 二零二五年会计师事务所能源审计与节能合同3篇
- 2024版公共卫生间装修合同范本
- 2025年度茶叶产品安全质量检测与认证合同2篇
- 2024年汽车融资租赁回租业务风险控制合同范本3篇
- 2025版高速公路养护劳务扩大协议书3篇
- 二零二五年度云计算项目策划与实施委托合同3篇
- 二零二五年度二手房买卖垫资代理协议5篇
- 张家爷爷的小花狗2
- 高中思想政治-高三一轮复习讲评课教学课件设计
- 自动喷水灭火系统的设计计算
- 教师评职称个人综述
- 旅游景区组织机构
- LSI-阵列卡操作手册
- 汉字文化解密(华中师范大学)超星尔雅学习通网课章节测试答案
- 黑龙江省哈尔滨市八年级上学期物理期末考试试卷及答案
- 商业综合体设计说明书
- GB/T 19587-2017气体吸附BET法测定固态物质比表面积
- 比赛车门凹陷修复
评论
0/150
提交评论