}
if(i>LIST_SIZE) { }
printf(\内存不足\\n\return 0;
strcpy(dir->list[i].fname,name); strcpy(dir->list[i].exname,exname); dir->list[i].length=length; flag=1; j=DATABEG+1;
while(1){//不断循环 }
FAT->id[t]=-1;
//
FAT->id[0]=FAT->id[0]-1;
if(MAP->maplist[j]!=1) {
} j++;
if(!templength--) //当length全部被分配完截止
break;
//上一块的地址
//第一次分配是的首地址
//给文件的首块
if(flag) { }
dir->list[i].fnum=j;
MAP->maplist[j]=1; if(!flag) { } t=j; flag=0;
FAT->id[t]=j;
//MAP减少
//
FAT->id[0]=FAT->id[0]-1;
} /**
printf(\已经成功创建文件%s \\n\return 1;
复制文件 */
int cp(char *str,char *newname) {
l=strlen(str);
//取文件名 for(i=0;i //去扩展名 j=0; i++; i++;//除去点 k=l-i; for(j=0;j if(str[i]=='\\0') break; name[i]=str[i]; if(str[i+1]=='.') break; int i,j,k,l,length; char name[8]={0}; //文件名称 char exname[3]={0}; //文件扩展名 struct DIR *dir; exname[j]=str[i]; } /* i++; } if(strcmp(newname,\{ } printf(\文件名不能为空\\n\return 0; dir=(struct DIR *)(file+currentdir*BLOCK_SIZE); for(i=2;i if(i>LIST_SIZE) { } length=dir->list[i].length ; create(newname,length); printf(\找不到指定的文件%s\\n\return 0; break; //子文件 if(strcmp(dir->list[i].fname,name)==0&&strcmp(dir->list[i].exname,exname)==0) *删除文件 */ int delfile(char *str) { int i,j,l,k; int blocknum; //要删除的首块地址 int temp; char name[8]={0}; //文件名称 char exname[3]={0}; //文件扩展名 char c='a'; struct DIR *dir; struct fatid *FAT; struct map *MAP; l=strlen(str); //取文件名 for(i=0;i //去扩展名 j=0; i++; i++;//除去点 k=l-i; for(j=0;j if(strcmp(str,\{ } dir=(struct DIR *)(file+(currentdir)*BLOCK_SIZE); MAP=(struct map *)(file+(FATNUM+1)*BLOCK_SIZE); FAT=(struct fatid *)(file+BLOCK_SIZE); printf(\文件名不能为空\\n\return 0; if(str[i]=='\\0') i++; } break; exname[j]=str[i]; name[i]=str[i]; if(str[i+1]=='.') break; for(i=2;i } if(i>LIST_SIZE) { } while(1) { } if(c=='n'||c=='N') return 0; blocknum=dir->list[i].fnum; dir->list[i].fnum=0; //把目录项还原 strcpy(dir->list[i].exname,\strcpy(dir->list[i].fname,\dir->list[i].length=0; printf(\是否确认?(Y/N)\cin>>c; if((c=='y'||c=='Y')||(c=='n'||c=='N')) break; printf(\找不到%s 文件\\n\return 0; if((strcmp(dir->list[i].fname,name)==0)&&(strcmp(dir->list[i].exname,exname)==0)) break; //处理FAT AND MAP 表 while(FAT->id[blocknum]!=-1) { } temp=FAT->id[blocknum];; FAT->id[blocknum]=0; FAT->id[0]=FAT->id[0]+1; MAP->maplist[blocknum]=0; blocknum=temp;