计算机操作系统课程设计_第1页
计算机操作系统课程设计_第2页
计算机操作系统课程设计_第3页
计算机操作系统课程设计_第4页
计算机操作系统课程设计_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机操作系统课程设计班级:计091-1姓名:学号:使用语言:C+指导老师: 学院一、系统要求1、实验目的通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部 实现。2、实验内容为linux系统设计一个简单的二级文件系统。要求做到以下几点:(1)可以实现下列几条命令(至少 4条);login用户登陆dir列文件目录create创建文件delete删除文件open打开文件close关闭文件read读文件write写文件(2)列目录时要列出文件名、物理地址、保护码和文件长度;(3)源文件可以进行读写保护。:、系统分析1、设计思想本文件为二级文件系统,即要实现对文件的增删改查,同时又具

2、备登陆系统、 注册用户的功能,各个用户之间的文件系统互不干扰。本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户 帐号下的文件。另外,为了简便文件系统未考虑文件共享, 文件系统安全以及管 道文件与设备文件等特殊内容。系统采用结构体来存储用户、文件目录、文件数据内容:048*548*5+44*5048*5+44*50+264*200用户区文件目录区文件数据区每个分区都是由结构体组成,每个个去的结构体的个数由格式化系统是决定。整个系统的编码构成主要分为:51 Workspace 1 project住 -file files-, Source Files 固 mymain.cpp 国

3、 mycys.cpp .myuserfiile.cppAllstruct.h Mysys.h Myuserfile.h Mymain.cpp Mysys.cpp Myuserfile.cpp- fa Header Files =| allstruct.li .mysys,h 百 myuserfile.h r l Resource Files定义了每个分区的结构体;声明了对系统操作的各种方法;声明了对文件操作的各种方法;整个系统的主函数,操作入口;包含了 mysys.h,实现了操作系统的各种方法;包含了 myuserfile.h ,实现了操作文件的各种方法;2、主要数据结构Allstruct.h

4、文件的内容:struct s_user用户区结构体long isuse;是否使用char name20;用户名char psd20;密码long address;/ 目录地址);struct s_list/目录结构体long isuse; 是否使用char name20;/文件名字long myaddress;本条 目 录地址long pointaddress; /旨向的文件的地址long isfile;是否锁定long pointsize;/目标文件的大小long nextaddress; 下条目录的地址);struct s_file/文件结构体long isuse; 是否使用char co

5、ntent256; /收件内容long next;/下个文件块地址 );选择三、系统执行1、如果首次进入系统,还没有文件系统,则会提示格式化文件系统,创建分区, 并初始化分区:4、注册用户功能:5、用户登录,登录成功后显示当前用户下的所有文件及其详细信息,同时显示 对文件操作的菜单:3、用户创建成功后出现对系统操作的菜单2、刚初始化后,没有用户,提示创建用户:请选择.1.e于h5旺。“。伊完成I是否创建用户7输入新用户的用户名二输入密码23再次输入密51由人存储MrKH KKM K 履*If输入新用户的用户名:a (Inin情输入密码123情再次输入密科:123庭入存储 创建用户成功,6、新注

6、册的用户默认为没有文件,选择创建文件,并且每次对文件操作后显示 当前用户的所有文件和操作菜单:储输入文件名呼母和数字,最测9个字符人aa文件由多少个字符附组成? t必须小于255g个字符5128文件是否锁定? y锁定/ n(或其他)自由读写 当朝目录下的文件,文件名大小是否锁定物理地址aa128 V24407、此次新建的文件为锁定状态,不能被删除:8、对文件查看,默认创建的时候用 0填充文件内容:京输入要查看的文件的名字I仅限当前目录 ia1000009000000090000000000000000000000000000000000000000000000000000 iat4BO0iU0

7、M0t4BO0iU0kl00BO0iH0Ejt)0300iH0Ejt)0300iH0Ejt)0300i00支件查看成功!当前目录下的文件;文件名大小是否锁定物理地址aa12S V24409、修改文件内容:请输入要修改的文件的名字;仅限当前目录改通新人内容;sdf sdlf sf sdf sdf sdJsdf sdfsJtfsdfsdf文件修改成功!帧4t MiilKiillllMIIMiiil * if * *,*,*11|"*,*,*11|"*"><"* M= * * * * *"M<当的目录下的文件: 丈侔名大小是否锁定1

8、28 Y物理地址2 M10、对文件的锁定进行装换:请输入要转换是否锁定的文件的名字,仅限当前目录aa文件已转换为自由读写I当前目录下的文件;文件名大小是否锁定128 N物理地址244S11、删除文件:输入要删除的文件的名字I4仅限当前目录匚件删除成功I12、注销登录退出系统:青输入'您的选择;:内容1查看文2 .新建文3 .删除文。.修改文件5 .是否锁定状态转换 日注销,退出程序士注销!re孙谷to 60ntinu片四、功能实现Mysys.h#include <stdio.h>#include "myuserfile.h"class MSysterm封

9、装了管理系统的方法成员变量private:FILE *myfile;MUser myuser;成员函数public:MSysterm()void outName(); 打印登陆后的用户名int cheack();检查虚拟文件系统跟是否存在int myformat();初始化虚拟磁盘int createuser(); 创建用户int login();用户登录void mymain();主控制程序int logout();用户注销;Myuserfile.h#include <stdio.h>class MUser封装了管理文件的方法成员变量public:FILE *myfile;cha

10、r name20;用户名char psd20;密码long listaddress;long myaddress;目录地址此用户的地址最后一个目录的地址private:long lastaddress;成员函数public:int createFile();增加文件int delFile(char filename20); 删除文件int revampFile(char filename20);/ 修改文件int mydir();列出当前目录的所有文件(夹)int viewFile(char filename20); 查看文件int myConversion(char filename20);

11、/ 转换是否锁定状态private:int isSame(char filename_f20,char filename_s20);Mymain.cpp#include <stdio.h>#include <iostream>#include "mysys.h"#include <limits> using namespace std;int main()char nod1;int n_select = 2 , i_1 =0;MSysterm mysys;/*文件不存在的程序入口 */if(mysys.cheack()=-1)/ 磁盘空间

12、不存在cout<<"虚拟磁盘文件不存在,是否生成?Y/N "<<endl;cin>>nod1;cin.clear(); /清除流的错误标记cin.ignore(numeric_limits<streamsize>:max(),'n'); / 清空输入流 if(nod1='Y'|nod1='y')cout<<"正在创建。"<<endl;if(mysys.myformat()!=1) 创建磁盘空间 cout<<"创建磁

13、盘空间失败!即将退出。 "<<endl;cin>>nod1;return 2;cout<<"创建完成!是否创建用户? Y/N "<<endl;cin>>nod1;cin.clear(); /清除流的错误标记cin.ignore(numeric_limits<streamsize>:max(),'n'); / 清空输入流 if(nod1='Y'|nod1='y')if(mysys.createuser()=1) 创建用户 cout<<&

14、quot;创建用户成功。"<<endl; else cout<<"创建用户失败!即将退出。"<<endl;return 3; elsecout<<"匿名用户无法进入系统,正在退出。"<<endl;return 4;elsecout<<"程序已结束!按任意键退出。"<<endl;return 1;/*文件存在的程序入口*/for (;)cout<<"*"<<endl;cout<<"

15、;请选择:"<<endl;3.退出"<<endl;cout<<" 1.登录"<<endl<<"2.注册"<<endl<<"cout<<"*"<<endl;cin>>n_select;cin.clear(); /清除流的错误标记cin.ignore(numeric_limits<streamsize>:max(),'n'); / 清空输入流if (n_selec

16、t = 1) 一for (int i_1=0;i_1<=3;i_1+)/ 登录一一 一if (mysys.login()=1)cout<<"登陆成功!欢迎您 "mysys.outName();break;else cout<<"用户名不存在或密码错误!"<<endl;if (i_1=4)一cout<<"非法用户!"<<endl<<"输入任意键退出。"<<endl;cin>>nod1;return 5;break;i

17、f (n_select = 2) 一if(mysys.createuser()=1) 创建用户cout<<"创建用户成功。"<<endl;elsecout<<"创建用户失败!"<<endl;if (n_select = 3) 一return 6; mysys.mymain(); return 0;Mysys.cpp#include "mysys.h"#include "allstruct.h"#include <iostream>#include <

18、stdio.h>#include <limits>/用于清除残留的输入流 using namespace std;int MSysterm:cheack()/检查虚拟空间是否存在 myfile=fopen("test1.txt","r");if(myfile=NULL)return -1;/返回-1,代表文件不存在fclose(myfile);return 1;int MSysterm:myformat()int i =1;myfile=fopen("test1.txt","w");if(myfi

19、le=NULL)return -1;s_user ms_user;ms_user.isuse=0;s_list ms_list;ms_list.isuse=0;s_file ms_file;ms_file.isuse=0;for (i =1 ; i<=5 ; i+) if(fwrite(&ms_user,sizeof(ms_user),1,myfile)!=1)用户区格式化一一cout<<"用户格式信息写入失败!"<<endl;fclose(myfile); return -2; for (i = 1; i<=50 ;i+)目录区

20、格式化if(fwrite(&ms_list,sizeof(ms_list),1,myfile)!=1)/一一cout<<"目录格式信息写入失败!"<<endl;fclose(myfile);return -3;for (i=0;i<=199;i+)if(fwrite(&ms_file,sizeof(ms_file),1,myfile)!=1)数据区格式化一一cout<<"数据格式信息写入失败!"<<endl;fclose(myfile);return -4;fclose(myfile)

21、;return 1;int MSysterm:createuser()/ 创建用户s_user ms_user,ms_user2;int nowaddress = 0 ,issame=0 ,m=0 , i =1 ;/记录当前的扫描指针,密码比对标志位,循环使用的变量cout<<"正在检查用户空间是否足够。"<<endl;myfile=fopen("test1.txt","r");for (i=1;i<=5;i+,fseek(myfile,44,1),nowaddress+) 检查用户空间是否足够if (f

22、read(&ms_user2.isuse,4,1,myfile)=0)一"<<endl;cout<<"读取用户空间失败,虚拟磁盘格式错误,可能已被损坏 fclose(myfile);return -1;if (ms_user2.isuse=0) 一break;if (i=6) cout<<"用户空间已满!创建用户失败"<<endl;return -2;for (;)cout<<"请输入新用户的用户名:"<<endl;cin>>ms_user.n

23、ame;cin.clear(); 清除流的错误标记cin.ignore(numeric_limits<streamsize>:max(),'n'); 清空输入流fseek(myfile,0,0);for (i=1;i<=5;i+) 检查用户名if (fread(&ms_user2.isuse,4,1,myfile)=0 )/ 找到被使用的用户区,下一步读取名cout<<"读取用户空间失败,虚拟磁盘格式错误,可能已被损坏"<<endl;fclose(myfile);return -1;if (ms_user2.

24、isuse=0) 一fseek(myfile,44,1); elseif (fread(&ms_,20,1,myfile)=0) 读取用户区的名字一cout<<"读取用户空间失败,虚拟磁盘格式错误,可能已被损坏"<<endl;fclose(myfile);return -1;for (m =0 ;m<=19;m+)if (ms_m != ms_m) 一一issame = 0;break; elseissame = 1;if (ms_m = '0'

25、) 一break;if (issame = 1)cout<<"用户名重复!请重新输入: "<<endl; break; fseek(myfile,24,1);if (i>=6)for (;)/输入密码cout<<"请输入密码,最多 19位。"<<endl;cin>>ms_user.psd;cin.clear(); 清除流的错误标记 cin.ignore(numeric_limits<streamsize>:max(),'n'); 清空输入流cout<<

26、;"请再次输入密码:"<<endl;cin>>ms_user2.psd;cin.clear(); 清除流的错误标记 cin.ignore(numeric_limits<streamsize>:max(),'n'); 清空输入流for (m =0 ;m<=19;m+) if (ms_user.psdm != ms_user2.psdm) 一一issame = 0;cout<<"两次密码不匹配"<<' '<<ms_user.psd<<&q

27、uot; "<<ms_user2.psd<<" "<<m<<endl;break; else issame = 1;if (ms_user.psdm = '0') 一 break; if (issame = 1) break;cout<<"进入存储。"<<endl;ms_user.isuse =1;空间使用置为使用;ms_user.address = 0;嫉认不存在目录 fclose(myfile);myfile=fopen("test1.txt&

28、quot;,"r+");fseek(myfile,48*nowaddress,0);if(fwrite(&ms_user,sizeof(ms_user),1,myfile) = 0)一一cout<<"写入用户信息失败! "<<endl; else break;fclose(myfile);return 1;int MSysterm:login() 用户登录 s_user ms_user,ms_user2;int issame = 0, m = 0 , i =0 ;/比较标记,循环使用的变量 cout<<&quo

29、t;请输入用户名:"<<endl;cin>>ms_;cin.clear(); 清除流的错误标记cin.ignore(numeric_limits<streamsize>:max(),'n'); 清空输入流myfile=fopen("test1.txt","r");for (i = 1;i<=5;i+) if (fread(&ms_user2.isuse,4,1,myfile)=0) 读取被使用的用户区一"<<endl;"<&

30、lt;endl;cout<<"读取用户空间失败,虚拟磁盘格式错误,可能已被损坏 fclose(myfile);return -1;if (ms_user2.isuse=0) 一fseek(myfile,44,1); continue; else if (fread(&ms_,20,1,myfile)=0)/ 读取名字一cout<<"读取用户空间失败,虚拟磁盘格式错误,可能已被损坏 fclose(myfile);return -1; for (m =0 ;m<=19;m+) if (ms_m != m

31、s_m) 一一issame = 0; break; elseissame = 1;if (ms_m = '0') 一 break; if (issame = 1) if (fread(&ms_user2.psd,20,1,myfile)=0) 读取密码一cout<<"读取密码失败!磁盘错误。 "<<endl; fclose(myfile);return -1;for (int k=0;k<=2;k+) cout<<"请输入密码:"<<end

32、l; cin>>ms_user.psd;cin.clear(); 清除流的错误标记 cin.ignore(numeric_limits<streamsize>:max(),'n'); 清空输入流for (m =0 ;m<=19;m+) if (ms_user.psdm != ms_user2.psdm) 一一issame = 0; break; else issame = 1; if (ms_user.psdm = '0') 一 break; if (issame = 0) cout<<"密码错误,请重新输入。

33、 "<<endl; else if (fread(&ms_user2.address,4,1,myfile)=0) 读取目录地址 一cout<<"读取目录失败!磁盘错误。"<<endl;fclose(myfile);return -1; for (m=0;m<=19;m+) 对对象 myuser 赋值 m = ms_m; myuser.psdm = ms_user2.psdm; 一myuser.listaddress = ms_user2.address; myuser.m

34、yaddress = (i-1)*48; fclose(myfile);return 1;/返回登录成功 fclose(myfile); return -2;/密码错误 fseek(myfile,24,1); fclose(myfile); return -1;void MSysterm:mymain() 主控制程序 int m_point=9,myget=0;/记录使用第几层控制台,接收函数返回值char m_name120,m_name220;for (;) if(m_point = 0) 一myget=logout(); break;cout<<endl<<&qu

35、ot;*"<<endl;cout<<"当前目录下的文件:"<<endl;cout<<"*"<<endl;myget = myuser.mydir();I*cout<<"*"<<endl.cout<<"请输入您白选择:"<<endl;cout<<"1.查看文件内容"<<endl;cout<<"2.新建文件"<<en

36、dl;cout<<"3.删除文件"<<endl;cout<<"4.修改文件"<<endl;cout<<"5.是否锁定状态转换"<<endl;cout<<"0.注销,退出程序"<<endl;cout<<"*"<<endl;cin>>m_point;cin.clear(); 清除流的错误标记cin.ignore(numeric_limits<streamsize&

37、gt;:max(),'n'); 清空输入流switch (m_point) 一case 1:if (myuser.listaddress = 0)cout<<"您还没有创建文件! "<<endl;break;cout<<"请输入要查看的文件的名字:(仅限当前目录)"<<endl;cin>>m_name1;cin.clear(); 清除流的错误标记cin.ignore(numeric_limits<streamsize>:max(),'n'); /清空输

38、入流myget = myuser.viewFile(m_name1);switch (myget)case 1:cout<<"文件查看成功!"<<endl;break;case -1:cout<<"磁盘打开失败!"<<endl;break;case -2:cout<<"文件不存在! "<<endl;break; default: break; break;/case 1文件打开case 2:myget = myuser.createFile(); switch (

39、myget) case 1: cout<<"创建成功!"<<endl;break;case -1: cout<<"磁盘打开失败!"<<endl;break; case -2: cout<<"目录空间已满! "<<endl; break;case -3: cout<<"数据空间已满!"<<endl;break; case -4: cout<<"文件名已存在!"<<endl;bre

40、ak;default: /cout<<"创建文件失败,原因未知!"<<endl;break;break;/case 2新建文件case 3:if (myuser.listaddress = 0) cout<<"您还没有创建文件!"<<endl;break;cout<<"请输入要删除的文件的名字:(仅限当前目录)"<<endl;cin>>m_name1;cin.clear(); 清除流的错误标记cin.ignore(numeric_limits<s

41、treamsize>:max(),'n'); 清空输入流myget = myuser.delFile(m_name1);switch (myget)case 1:cout<<"文件删除成功!"<<endl;break;case -1:cout<<"磁盘打开失败!"<<endl;break;case -2:cout<<"文件不存在!"<<endl;break;case -4:cout<<"文件锁定!不能删除! "

42、<<endl;break; default:cout<<"未知原因,删除失败! "<<endl;break;break;/case 3删除文件case 4:if (myuser.listaddress = 0)cout<<"您还没有创建文件! "<<endl;break;cout<<"请输入要修改的文件的名字:(仅限当前目录)"<<endl;cin>>m_name1;cin.clear(); 清除流的错误标记cin.ignore(numer

43、ic_limits<streamsize>:max(),'n'); 清空输入流myget = myuser.revampFile(m_name1);switch (myget)case 1:cout<<"文件修改成功!"<<endl;break;case -1:cout<<"磁盘打开失败!"<<endl;break;case -2: cout<<"文件不存在!"<<endl;break; case -4:/cout<<&qu

44、ot;文件锁定!无法修改!"<<endl;break;case -5: cout<<"输入内容过多!无法修改!"<<endl;break; default:/cout<<"未知原因,修改失败! "<<endl;break; break;/case 4修改文件case 5:if (myuser.listaddress = 0) cout<<"您还没有创建文件!"<<endl;break;cout<<"请输入要转换是否锁定的

45、文件的名字:(仅限当前目录)"<<endl;cin>>m_name1;cin.clear(); 清除流的错误标记cin.ignore(numeric_limits<streamsize>:max(),'n'); 清空输入流 myget = myuser.myConversion(m_name1); switch (myget) case 0: cout<<"文件已转换为锁定! "<<endl; break;case 1: cout<<"文件已转换为自由读写!"

46、;<<endl;break;case -1: cout<<"磁盘打开失败!"<<endl;break;case -2: cout<<"文件不存在!"<<endl;break; default:cout<<"未知原因,修改失败!"<<endl;break;break;/case 5转换是否锁定状态default: break;/switchint MSysterm:logout()/ 用户注销char word20 = '0'for (i

47、nt i = 0 ; i<=19 ; i+)i = wordi;myuser.psdi = wordi;fclose(myfile);cout<<"已注销! "<<endl;return 1;void MSysterm:outName()打印登陆后的用户名cout<<<<endl;Myuserfile.cpp#include <iostream>#include <stdio.h>#include <iomanip>#include <

48、limits>/用于清除残留的输入流#include "myuserfile.h"#include "allstruct.h"using namespace std;int MUser:createFile()/ 增加文件s_list ms_list;s_file ms_file;long nowaddress =0 ,f_address10, num_char = 0 ;/目录循环记录变量,数据块地址变量int f_ad_num = 0 , myerr = 0 ,i = 1; /写入的块数,是否在最终写入时失败(失败置1)char f_name2

49、0 = ' ',m='0',e='0',f_islock;long old_lastaddress = lastaddress ;上一个目录地址(用于出错回滚)myfile=fopen("test1.txt","r+");if (myfile = NULL)cout<<"读取磁盘失败!"<<endl;fclose(myfile);return -1;fseek(myfile,48*5,0);/文件指针跳到目录区for (i=1;i<=50;i+,fseek(

50、myfile,40,1),nowaddress+) 检查目录空间是否足够if (fread(&ms_list.isuse,4,1,myfile)=0) 读取是否使用一cout<<"读取目录空间失败,虚拟磁盘格式错误,可能已被损坏"<<endl;fclose(myfile);return -1;if (ms_list.isuse=0)如果读取到未使用则跳出检测 一break;if (i=51)cout<<"目录空间已满!创建文件失败"<<endl;fclose(myfile);return -2;fs

51、eek(myfile,48*5+44*50,0);/ 文件指针跳到数据区for (i=1;i<=200;i+,fseek(myfile,260,1) 检查数据空间是否足够(初步检查)if (fread(&ms_file.isuse,4,1,myfile)=0) 读取是否使用一cout<<"读取数据空间失败,虚拟磁盘格式错误,可能已被损坏"<<endl;fclose(myfile);return -1;if (ms_file.isuse=0)如果有空白的数据块则跳出 一break;if (i=201)cout<<"数

52、据空间已满!创建文件失败"<<endl;fclose(myfile);return -2;cout<<”请输入文件名(字母和数字,最多 19个字符):"<<endl; cin>>f_name;cin.clear(); 清除流的错误标记cin.ignore(numeric_limits<streamsize>:max(),'n'); 清空输入流fseek(myfile,48*5,0);/文件指针跳到目录区for (i=1;i<=50;i+)检查文件名是否被使用if (fread(&ms_

53、list,sizeof(ms_list),1,myfile)=0)读取目录一一cout<<"读取目录空间失败,虚拟磁盘格式错误,可能已被损坏 "<<endl;fclose(myfile);return -1;if (ms_list.isuse = 1)如果读取到未使用则跳出检测 一if( isSame(f_name,ms_) = 1)一 一fclose(myfile);return -4;for (;)cout<<"文件由多少个字符m组成?(必须小于2550个字符)"<<endl;cin&

54、gt;>num_char;cin.clear(); 清除流的错误标记cin.ignore(numeric_limits<streamsize>:max(),'n'); 清空输入流if (num_char <= 2550) 一break;cout<<"文件长度必'须小于 2550个字符。"<<endl;ms_list.pointsize = num_char;cout<<"文件是否锁定? y锁定/ n(或其他)自由读写"<<endl;/确定是否锁定 cin>

55、;>f_islock;cin.clear(); 清除流的错误标记cin.ignore(numeric_limits<streamsize>:max(),'n'); 清空输入流if( f_islock = 'y' | f_islock = 'Y')一一ms_list.isfile = 0; 一elsems_list.isfile =1; 一fseek(myfile,48*5+44*50,0);/ 文件指针跳到数据区for ( i=0 ; i<=199 && f_ad_num<=(num_char/255

56、); i+ , fseek(myfile,260,1) )/检查数据空间是否足够一一一if (fread(&ms_file.isuse,4,1,myfile)=0)一cout<<"读取数据空间失败,虚拟磁盘格式错误,可能已被损坏"<<endl;fclose(myfile);return -1;if (ms_file.isuse=0)如果有空白区块 一f_addressf_ad_num = i*264+48*5+44*50;/记录下当前空白区块的绝对物理地.f_ad_num+;/ 先用后加if (f_ad_num <= (num_char

57、/255)/ 空白的地址不足一一一cout<<"没有足够的磁盘空间,创建失败!"<<endl;fclose(myfile);return -3;ms_file.isuse = 1;int k = 0;/for循环变量for (i=0 ; i<f_ad_num ; i+)一 一if ( i < (f_ad_num-1) )/对下个数据块进行链接ms_file.next = f_addressi+1;elsems_file.next = 0; 一fseek(myfile,f_addressi,0);/ 跳转到空白数据块if ( num_cha

58、r > 255)/经加太多,一个区块放不了 一if ( fwrite(&ms_file.isuse,4,1,myfile) = 0)写入已被使用一cout<<"数据模块写入isuse失败"<<endl;myerr = 1;for ( k =1 ; k <=255 ; k+) 写入数据if (fwrite(&m,1,1,myfile) =0)cout<<"数据模块写入内容失败"<<endl;myerr = 1;if ( fwrite(&e,1,1,myfile) = 0)/

59、 写入结束符cout<<"数据模块写入结束符失败"<<endl;myerr = 1;if ( fwrite(&ms_file.next,4,1,myfile) = 0)写入下个数据块地址一cout<<"数据模块写入 next失败"<<endl;myerr = 1;num_char-=255; 一else数据小于一个区块的大小if ( fwrite(&ms_file.isuse,4,1,myfile) = 0)区块置为已使用一cout<<"数据模块写入isuse失败&qu

60、ot;<<endl;myerr = 1;for ( k =1 ; k <=num_char ; k+)一if (fwrite(&m,1,1,myfile) =0)cout<<"数据模块写入内容失败"<<endl;myerr = 1;for (k =1 ; k<= (256-num_char);k+)/ 写入数据一if ( fwrite(&e,1,1,myfile) = 0)cout<<"数据模块写入结束符失败"<<endl;myerr = 1;if ( fwrite(&ms_file.next,4,1,myfile) = 0)写入下个文件链接地址,就是写入一cout<<"数据模块写入 next失败"<<endl;myerr = 1;/判断是否最后一个数据块结束/数据

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论