如何操作文件的打开关闭修改
名
MFD[a].count=0; //该用户下的文件数清零
NOU--;//用户数减1
cout<<" 用户 "<<temp<<" 注销成功"<<endl; //提示注销成功
cout<<" 系统当前用户数: "<<NOU<<endl;
}
新建文件
void Create(int a){
int i=0;
char filename[5];//文件名
char property[3];//文件属性
char temp[2]; //文件属性的临时变量
string str;//临时变量
Re:
cout<<"请输入创建文件名(长度为 4) 文件属性(r,rw):"<<endl;//提示输入
cout<<"文件名: "; //输入要创建的文件名
cin>>filename;
if(strlen(filename)>4) goto Re;//如果文件名长度不符合要求,则要求重新输入
loop:
cout<<"文件属性(r,rw) :";//输入文件属性,读或是读写
cin>>property;
strcpy(temp,property);//将属性字符串 赋值给temp
if(!(strcmp(temp,"rw")==0||strcmp(temp,"r")==0))//检查属性是否正确
{ cout<<"文件属性设置错误. 请重新设置: r or rw"<<endl;//属性错误,重新输入
goto loop;
}
//对文件名filename进行处理
str=static_cast<string>(filename);
strcpy(filename,str.substr(0,4).c_str());
//对MFD[a].UserDirec[i].fname文件名进行处理
str=static_cast<string>(MFD[a].UserDirec[i].fname);
strcpy(MFD[a].UserDirec[i].fname,str.substr(0,4).c_str());
while((strcmp(MFD[a].UserDirec[i].fname,filename)!=0)&&(i<L)) /*查用户的UFD,检测该文件是否重名*/
{ i++;
str=static_cast<string>(MFD[a].UserDirec[i].fname);
strcpy(MFD[a].UserDirec[i].fname,str.substr(0,4).c_str());
}
if(i>=L){ //无重名文件
if(MFD[a].count>=L)//如果用户文件目录UFD已满,则提示文件满的信息
{cout<<" 用户"<<MFD[a].Username
<<" 文件目录UFD已满."<<endl;
}
//当用户文件目录UFD未满时
else{
int j=0;
int k=0;
while(strcmp(MFD[a].UserDirec[j].fname,"")!=0&&(j<L)) /*在UFD中寻找空登记栏,并登记*/
{j++; }
MFD[a].count++; //用户的文件计数器加1
strcpy(MFD[a].UserDirec[j].fname,filename); //UFD中登记文件名
MFD[a].UserDirec[j].length=Record;//UFD记录长度
strcpy(MFD[a].UserDirec[j].proper,temp);//UFD中文件属性
srand((unsigned)time(NULL)); //产生随机数
i=rand()%100;// 找一磁盘空闲块并赋值给i
MFD[a].UserDirec[j].addr=i;//在UFD登记栏中置文件地址为i
//提示文件在UFD中