模拟实现单级目录、单级索引的索引文件系统(2)
fread(dir,DirSize*32,1,fp); return fp; }
int CLOSESYS(FILE *stream) { int i;
fseek(stream,sys1.resblocknum*BlockSize,0); fwrite(fat1,sizeof(int)*sys1.sysblocknum,1,stream);
fseek(fp,(sys1.fatblocknum+sys1.resblocknum)*BlockSize,0); fwrite(dir,DirSize*32,1,fp); fclose(fp); return 1; }
void LISTDIR(void)/*显示目录*/ { int i,flag=0; for(i=0;i<32;i++)
{ if(fil[i].firstblockaddr!=0) { if(flag==0)
printf("filename \n"); flag=1; /*标示*/
printf("%s\n",fil[i].filename); } } }
int FCREATE(char *filename)/*建立文件*/ { int i,flag=0,j,k=0,flag1=0,flag2=0,a; int n,m; while(1)
{a=strlen(filename);/*文件名长度*/ if(a>10)
{printf("This file length too long!\n"); printf("input file name again:"); scanf("%s",filename); }else
break; } while(1)
{ for(i=0;i<32;i++)
if(strcmp(filename,fil[i].filename)==0) { printf("the name already exist \n"); printf("input name again:");
flag1=1; break; }
if(flag1==0) break;
scanf("%s",filename); flag1=0; }
for(i=(sys1.fatblocknum+sys1.resblocknum+sys1.rootblocknum);i<sys1.sysblocknum;i++) if(fat1[i]==0)
flag++;/*统计磁盘上为空数目*/ if(flag==0)
{ printf("ci pan yi man");/*统计结果为0,则磁盘已满*/ return 0; }
printf("kong xian kuai shu:%d\n",flag); printf("input file length:"); for(j=0;j<32;j++)
if(fil[j].firstblockaddr==0) break; while(1)
{scanf("%d",&dir[j].filelen);/*输入目录项中文件的长度*/ n=(dir[j].filelen/BlockSize)+(dir[j].filelen%BlockSize?1:0); if(n<0||n>flag)/*文件长度小于0或大于空闲的空间 */ {printf("input length too long!\n"); printf("input again:"); } else break; }
for(i=(sys1.fatblocknum+sys1.resblocknum+sys1.rootblocknum);i<sys1.sysblocknum;i++)/*文件内容区域*/ { if(fat1[i]==0) { k++;
if(flag2==0)
{ dir[j].firstblockaddr=i+1; flag2=1; } else
{ if(k>=n)/*n 文件长度*/ { fat1[m]=i+1; fat1[i]=-1; break; }else
fat1[m]=i+1; } m=i;
}
strcpy(dir[j].filename,filename); dir[j].filename[a]='\0'; printf("input year:"); scanf("%d",&dir[j].year); printf("input month:"); scanf("%d",&dir[j].month); printf("input day:"); scanf("%d",&dir[j].day); return (1); }
int FDELETE(char *filename)/*删除文件 */ {int i,j,k,n,flag=0;
struct FCBBlock *p;/*文件控制块指针*/ p=fcb; while(p)
{if(strcmp(filename,fil[p->fdtblockindex].filename)==0)/*目录项所在序号 */ {printf("the file has open,please close it before delete !\n"); return 0; } else
p=p->next; }
for(i=0;i<32;i++)/*查找要关闭的文件 */ if(strcmp(filename,fil[i].filename)==0) { flag=1; break; }
if(flag==0)
{printf("file cannot find!\n"); return 0; }
j=fil[i].firstblockaddr; while(1)
{ k=fat1[j-1];
fseek(fp,(j-1)*BlockSize,0);/*将指针指向文件的第一个扇区的位置 */ fwrite(&fillchar,1,BlockSize,fp); fat1[j-1]=0; if(k==-1) break; else
j=k; }
memset(&fil[i],0,DirSize);
…… 此处隐藏:533字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [小学教育]四年级综合实践活动课《衣物的洗涤》教
- [小学教育]2014半年工作总结怎么写
- [小学教育]20世纪外国文学专题综合试题及答案
- [小学教育]TS_1循环使用催化丙烯环氧化反应研究
- [小学教育]最实用的考勤签到表(上下班签到表)
- [小学教育]气候与生态建筑——以新疆民居为例
- [小学教育]二人以上股东有限责任公司章程参考样本
- [小学教育]2014届第一轮复习资料4.1,3美好生活的
- [小学教育]土方开挖、降水方案
- [小学教育]手绘儿童绘本《秋天的图画》(蜡笔)
- [小学教育]2002级硕士研究生卫生统计学考试试题
- [小学教育]环保装备重点发展目录
- [小学教育]金蝶K3合并报表培训教材
- [小学教育]岩浆岩试题及参考答案
- [小学教育]知之深爱之切学习心得
- [小学教育]第十二章 蛋白质的生物合成
- [小学教育]Chapter 2-3 Solid structure and basi
- [小学教育]市政道路雨季专项施工方案
- [小学教育]中国海洋大学2012-2013学年第二学期天
- [小学教育]教育心理学第3章-学习迁移
- 浅谈深化国企改革中加强党管企业
- 2006年中国病理生理学会学术活动安排
- 设计投标工作大纲
- 基于ARP的网络攻击与防御
- 2016届湖北省七市(州)教科研协作体高三
- Google_学术搜索及其检索技巧
- 2019-2020学年七年级地理下册6.3美洲教
- 城市道路可研报告
- 【名师指津】2012高考英语 写作基础技
- 6级知识点培训北京师范大学《幼儿智趣
- 注册会计师会计知识点:金融资产
- 新安装 500 kV 变压器介损分析与判断
- PS2模拟器PCSX2设置及使用教程.
- 医院药事管理与药剂科管理组织机构
- {PPT背景素材}丹巴的醉人美景,免费,一
- NAS网络存储应用解决方案
- 青海省西宁市六年级上学期数学期末考试
- 测量管理体系手册依据ISO10012:2003
- 洞子小学培养骨干教师工作计划
- 浅谈《牛津初中英语》的教材特点及教学