发布时间 : 星期一 文章操作系统文件系统的设计与实现课程设计讲解更新完毕开始阅读
}
printf(\ num=num+1;
emptytable.filenum=num;
WriteFile(); //写目录及位示图 fclose(fq); fclose(fq1); }
void mkfile() //建立一个文件 { FILE *fp;
if((fp=fopen(\ printf(\ exit(0); }
struct strNode //数据块 { char word[64]; struct strNode *next; }*head,*p,*q;
char name[9],ext1[4]; int i=0,j=0;
head=p=q=new struct strNode; //申请结构体内存空间 char ch;
printf(\请输入文件内容,按 @ 键保存且退出!\\n\ do{ for(i=0;i<64;i++) { //ch=getchar(); scanf(\ p->word[i]=ch; if(ch=='@')break; } if(ch!='@') { p=new struct strNode; q->next=p; q=p; j++; }
}while(ch!='@'); getchar();
int num1, size=(j*64+i)*sizeof(char); //j为结构体的个数,i为不足一个结构体
18
的字符数 ////////
printf(\文件长度为:%d\\n\ char judge='n'; do{
printf(\请输入文件的英文名字:\ gets(name); //scanf(\ printf(\请输入文件的扩展名:\ gets(ext1); //scanf(\ if(*ext1=='\\0') strcpy(ext1,\ judge='y';
if(*name=='\\0') { printf(\错误!文件名不能为空!\\n\ printf(\是否放弃此文件[Y/N] \ scanf(\ if( (judge=='y') || (judge=='Y') ) return; }
}while( (judge=='n') || (judge=='N') ); fseek(fp,512L,0);
fread(&emptytable,sizeof(struct empty),1,fp); rewind(fp);
num=emptytable.filenum; /*for(i=0;i for (i=0;i num1=size/512; if((sizeQ2)>0) num1=num1+1; strcpy(file[num].name,name); //printf(\%s %s\ strcpy(file[num].ext,ext1); file[num].size = size; 19 file[num].Amount=num1; int sign=0 ,n=0; //空间分配 for(int m=2 ; m <=10-num1; m++){ //**************************** if(emptytable.map[m]==0){ for(n=file[num].Amount; n>0; n--){ if(emptytable.map[m+n-1]==1){ sign=1; break; }//if }//for if(sign==0)break; m+=n-1; sign=0; }//if }//for if(m<=10-num1) file[num].i = //*********************************************** else { printf(\空间不足!\\n\ return; } for(j=0;j < file[num].Amount;j++){ emptytable.map[m+j]=1; } num=num+1; emptytable.filenum=num; WriteFile();//写目录及位示图 //写数据 fseek(fp,file[num-1].i * 512L,0); long int cycle=file[num-1].size; p=head; i=0; for(j=cycle;j>0;j--) { ch=p->word[i++]; fwrite(&ch,sizeof(char),1,fp); if(i>=64) { i=0; 20 m; p=p->next; } // cycle--; } rewind(fp); for(j=0,i=0;i void rename(){ FILE *fp; if((fp=fopen(\ printf(\ exit(0); } char sourse[12],sext[8],object[12],oext[8]; int num,sign; printf(\请输入需要重命名的文件名和扩展名:\\n\ gets(sourse); gets(sext); printf(\请输入新的名字和扩展名:\\n\ gets(object); gets(oext); fseek(fp,512L,0); fread(&emptytable,sizeof(struct empty),1,fp); num = emptytable.filenum; rewind(fp);