




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、時(shí)磊忖呎計(jì)算機(jī)操作系統(tǒng)課程設(shè)計(jì)班級(jí):計(jì)091-1姓名:學(xué)號(hào):使用語言:C+指導(dǎo)老師: 學(xué)院:、系統(tǒng)要求1、實(shí)驗(yàn)?zāi)康耐ㄟ^一個(gè)簡單多用戶文件系統(tǒng)的設(shè)計(jì),加深理解文件系統(tǒng)的內(nèi)部功能及內(nèi)部實(shí)現(xiàn)。2、實(shí)驗(yàn)內(nèi)容為linux系統(tǒng)設(shè)計(jì)一個(gè)簡單的二級(jí)文件系統(tǒng)。要求做到以下幾點(diǎn):(1)可以實(shí)現(xiàn)下列幾條命令(至少4條);logi n用戶登陸dir列文件目錄create創(chuàng)建文件delete刪除文件ope n打開文件close關(guān)閉文件read讀文件write寫文件(2)列目錄時(shí)要列出文件名、物理地址、保護(hù)碼和文件長度;(3)源文件可以進(jìn)行讀寫保護(hù)。.二、系統(tǒng)分析1、設(shè)計(jì)思想本文件為二級(jí)文件系統(tǒng),即要實(shí)現(xiàn)對(duì)文件的增刪改查
2、,同時(shí)又具備登陸系統(tǒng)、 注冊用戶的功能,各個(gè)用戶之間的文件系統(tǒng)互不干擾。本文件系統(tǒng)采用兩級(jí)目錄,其中第一級(jí)對(duì)應(yīng)于用戶賬號(hào),第二級(jí)對(duì)應(yīng)于用戶 帳號(hào)下的文件。另外,為了簡便文件系統(tǒng)未考慮文件共享, 文件系統(tǒng)安全以及管 道文件與設(shè)備文件等特殊內(nèi)容。系統(tǒng)采用結(jié)構(gòu)體來存儲(chǔ)用戶、文件目錄、文件數(shù)據(jù)內(nèi)容:048*548*5+44*5048*5+44*50+264*200用戶區(qū)文件目錄區(qū)文件數(shù)據(jù)區(qū)每個(gè)分區(qū)都是由結(jié)構(gòu)體組成,每個(gè)個(gè)去的結(jié)構(gòu)體的個(gè)數(shù)由格式化系統(tǒng)是決定。整個(gè)系統(tǒng)的編碼構(gòu)成主要分為:51 Workspace 1 project -file files-Source Files 圃 mymain.cpp
3、 團(tuán) rriycys.cpp 丈 1 myuserfiile.cpp- 3 Header FilesXI allstruct.li 司 mysys,h 荀 myuserfile.h r l Resource FilesAllstruct.h定義了每個(gè)分區(qū)的結(jié)構(gòu)體;Mysys.h聲明了對(duì)系統(tǒng)操作的各種方法;Myuserfile.h聲明了對(duì)文件操作的各種方法;Myma in .cpp整個(gè)系統(tǒng)的主函數(shù),操作入口;Mysys.cpp包含了 mysys.h,實(shí)現(xiàn)了操作系統(tǒng)的各種方法;Myuserfile.cpp 包含了 myuserfile.h ,實(shí)現(xiàn)了操作文件的各種方法;2、主要數(shù)據(jù)結(jié)構(gòu)Allstru
4、ct.h struct s_user long isuse; char n ame20; char psd20; long address;struct s_listlong isuse; char n ame20;long myaddress;文件的內(nèi)容:用戶區(qū)結(jié)構(gòu)體/是否使用用戶名/密碼/目錄地址目錄結(jié)構(gòu)體/是否使用 文件名字/本條目錄地址long poi ntaddress; /指向的文件的地址 long isfile;/ 是否鎖定long poi ntsize; /目標(biāo)文件的大小long nextaddress; /下條目錄的地址 ;struct s file/文件結(jié)構(gòu)體 long i
5、suse;/是否使用char conten t256; /文件內(nèi)容long next;/下個(gè)文件塊地址 ;啪 “吋三、系統(tǒng)執(zhí)行濮壽和I題aa廡那彌BBM3、用戶創(chuàng)建成功后出現(xiàn)對(duì)系統(tǒng)操作的菜單4、注冊用戶功能:爲(wèi)輸入新用戶的用戶名: a dnin淸輸入密碼123情再次輸入密碼:1235、用戶登錄,登錄成功后顯示當(dāng)前用戶下的所有文件及其詳細(xì)信息,同時(shí)顯示 對(duì)文件操作的菜單:布磊Sn/ 訂輸入用戶名.請輸入密碼:23登陸成珈歡迎您yu當(dāng)前目錄下的文件:此用戶沒有超腱文件,目錄為空IMLKJMXEltEXMKJHXiMHEXMLKJMltJtJOCKJtXKltJtJtJC%二lL請輸入您的選擇;查看
6、文-恭新建文X刪除文14-修改文1 .是否鎖定狀態(tài)轉(zhuǎn)換0注銷,退出程序XHJMHMXXXXMXJMK XHMrHIHXXEME XKX XX.XK K 班 *M6新注冊的用戶默認(rèn)為沒有文件,選擇創(chuàng)建文件,并且每次對(duì)文件操作后顯示 當(dāng)前用戶的所有文件和操作菜單:物理地址2440JCMJCJiMLMXJCJiCMjXXK:MJC 當(dāng)前目錄下的文件 文件名aa丸小是否鎖定128*M;EKM:IIXiM;M KKiMUtf ! KWH 萬科11;備輸入文件名字母和數(shù)字最多均個(gè)字符兒 aa文件由多少個(gè)字符m組成? HXW!W!HX 址ME址3tftMW輩- MiNHK MH X 酬謙 托 JC 悴 MH
7、 X X* Jf X 料X X* Jf H iH 煒轉(zhuǎn)轉(zhuǎn)W 3C 管豪薑奩桂忙策桂就沌螢奩桂僮”算青僮”算世育世耳世育背胃貝崛I12、注銷登錄退出系統(tǒng):內(nèi)容青輸人您的選拝;1 查看文杵 齊新建文卜3 刪除文件 嘰催改文禪 匚是否報(bào)定狀態(tài)轉(zhuǎn)換 乩注銷.退出程序三注銷!四、功能實(shí)現(xiàn)Mysys.h#i nclude #i nclude myuserfile.hclass MSysterm封裝了管理系統(tǒng)的方法/成員變量private:FILE *myfile;MUser myuser;/成員函數(shù)public:MSysterm()void outName();/打印登陸后的用戶名int cheack()
8、;檢查虛擬文件系統(tǒng)跟是否存在int myformat();/初始化虛擬磁盤int createuser(); / 創(chuàng)建用戶int log in();/ 用戶登錄void mymai n();/主控制程序int logout();/ 用戶注銷;Myuserfile.h#in clude class MUser/圭寸裝了管理文件的方法 /成員變量public:FILE *myfile;char n ame20;/ 用戶名char psd20;/ 密碼時(shí)磊忖呎long listaddress;/ 目錄地址long myaddress;此用戶的地址private:long lastaddress;/成
9、員函數(shù)/最后一個(gè)目錄的地址public:int createFile();增加文件int delFile(char filename20); 刪除文件int revampFile(char filename20); 修改文件in t mydir();列出當(dāng)前目錄的所有文件(夾)int viewFile(char filename20); 查看文件int myConversion(char filename20); 轉(zhuǎn)換是否鎖定狀態(tài)private:int isSame(char filename_f20,char filename_s20);Mymain.cpp#i nclude #in clu
10、de #in clude mysys.h #i nclude using n amespace std;int mai n()char nod1;int n_ select = 2 , i_1 =0; MSysterm mysys;*文件不存在的程序入口*/if(mysys.cheack()=-1) 磁盤空間不存在cout虛擬磁盤文件不存在,是否生成?Y/N e ndl;cinno d1;cin.clear(); /清除流的錯(cuò)誤標(biāo)記cin.ignore(numeric_limits:max(),n); /清空輸入流if(n od1=Y| nod1=y)cout正在創(chuàng)建。endl; if(mys
11、ys.myformat()!=1) 創(chuàng)建磁盤空間 cout創(chuàng)建磁盤空間失??!即將退出。e ndl;cinno d1;return 2;cout創(chuàng)建完成!是否創(chuàng)建用戶?Y/N endl;cinno d1;cin.clear(); /清除流的錯(cuò)誤標(biāo)記cin.ignore(numeric_limits:max(),in); /清空輸入流if(n od1=Y| nodi二y)if(mysys.createuser()=1)/ 倉U建用戶 cout創(chuàng)建用戶成功。e ndl;elsecout創(chuàng)建用戶失敗!即將退出。e ndl;return 3;elsecout匿名用戶無法進(jìn)入系統(tǒng),正在退出。endl;re
12、turn 4;elsecout程序已結(jié)束!按任意鍵退出。endl; return 1;/*文件存在的程序入口*/for (;)cout*e ndl;cout請選擇:e ndl; cout 1.登錄endl2.注冊endl3.退出endl;cout*e ndl;ci nn_ select;cin.clear(); /清除流的錯(cuò)誤標(biāo)記cin.ignore(numeric_limits:max(),n); /清空輸入流if (n_select = 1)-for (in t i_1= 0;i_1=3;i_1+) 登錄if (mysys.logi n()=1) cout登陸成功!歡迎您 ;mysys.o
13、utName();break;else cout用戶名不存在或密碼錯(cuò)誤!e ndl;if (i_仁=4)-cout非法用戶!endl輸入任意鍵退出。endl; cinno d1;return 5;break;if (n_select = 2)- if(mysys.createuser()=1) 倉U建用戶cout創(chuàng)建用戶成功。e ndl;elsecout創(chuàng)建用戶失敗!e ndl;if (n_select = 3)-return 6; mysys.myma in(); return 0;Mysys.cpp#in clude mysys.h#in clude allstruct.h#in clud
14、e #i nclude #include 用于清除殘留的輸入流 using n amespace std;int MSysterm:cheack()檢查虛擬空間是否存在 myfile=fope n( test1.txt,r); if(myfile=NULL)return -1;/返回-1,代表文件不存在fclose(myfile);return 1;int MSysterm:myformat()int i =1;myfile=fope n(test1.txt,w); if(myfile=NULL)return -1; s_user ms_user;ms_user.isuse=0;s_list
15、msist;時(shí)磊忖呎ms_list.isuse=O;s_file ms_file;ms_file.isuse=0;for (i =1 ; i=5 ; i+)if(fwrite(&ms_user,sizeof(ms_user),1,myfile)!=1)用戶區(qū)格式化 - -cout用戶格式信息寫入失敗!endl;fclose(myfile);return -2;for (i = 1; i=50 ;i+)if(fwrite(&ms_list,sizeof(ms_list),1,myfile)!=1)目錄區(qū)格式化 - -cout目錄格式信息寫入失敗!endl;fclose(myfile);retur
16、n -3;for (i=0;i=199;i+)if(fwrite(&m s_file,sizeof(ms_file),1,myfile)!=1)/數(shù)據(jù)區(qū)格式化 - -cout數(shù)據(jù)格式信息寫入失?。 ndl;fclose(myfile);return -4;fclose(myfile);return 1; int MSysterm:createuser() 創(chuàng)建用戶s_user ms_user,ms_user2;int nowaddress = 0 ,issame=0 ,m=0 , i =1 ;/記錄當(dāng)前的掃描指針,密碼比對(duì)標(biāo)志位,循環(huán)使用的變量cout正在檢查用戶空間是否足夠。endl;my
17、file=fope n( test1.txt,r);for (i=1;i=5;i+,fseek(myfile,44,1), nowaddress+) 檢查用戶空間是否足夠 if (fread(&m s_user2.isuse,4,1,myfile)=0) -e ndl;cout讀取用戶空間失敗,虛擬磁盤格式錯(cuò)誤,可能已被損壞 fclose(myfile);return -1;時(shí)需Sr彳時(shí)需忖呎if (ms_user2.isuse=0)-break;if (i=6)cout用戶空間已滿!創(chuàng)建用戶失敗endl;return -2;for (;)cout請輸入新用戶的用戶名: ms_user. na
18、me;cin.clear(); /清除流的錯(cuò)誤標(biāo)記cin.ignore(numeric_limits:max(),n); /清空輸入流fseek(myfile,0,0);for (i=1;i=5;i+) 檢查用戶名步讀取名e ndl;if (fread(&ms_user2.isuse,4,1,myfile)=0 )/ 找到被使用的用戶區(qū),下-字_cout讀取用戶空間失敗,虛擬磁盤格式錯(cuò)誤,可能已被損壞fclose(myfile);return -1;if (ms_user2.isuse=0)-fseek(myfile,44,1);elseif (fread(&ms_,20,
19、1,myfile)=0) 讀取用戶區(qū)的名字 -cout讀取用戶空間失敗,虛擬磁盤格式錯(cuò)誤,可能已被損壞e ndl;fclose(myfile);return -1;for (m =0 ;m=19;m+)if (ms_user. namem != ms_user2. namem)- -issame = 0;break;elseissame = 1;if (ms_user. namem = 0)-break;if (issame = 1)cout用戶名重復(fù)!請重新輸入:=6)for (;)/輸入密碼cout請輸入密碼,最多19位。endl;cinm s_user.psd;cin.clear();
20、/清除流的錯(cuò)誤標(biāo)記cin.ignore(numeric_limits:max(),n); /清空輸入流cout請?jiān)俅屋斎朊艽a:e ndl;cinm s_user2.psd;cin.clear(); /清除流的錯(cuò)誤標(biāo)記cin.ignore(numeric_limits:max(),in); /清空輸入流for (m =0 ;m=19;m+)if (ms_user.psdm != ms_user2.psdm)- -issame = 0;cout兩次密碼不匹配 ms_user.psd ms_user2.psd me ndl;break;elseissame = 1;if (ms_user.psdm
21、= 0)-break;if (issame = 1) break;cout進(jìn)入存儲(chǔ)。endl; ms_user.isuse =1;/空間使用置為使用(1); ms_user.address = 0;/默認(rèn)不存在目錄 fclose(myfile);myfile=fope n( test1.txt,r+); fseek(myfile,48* no waddress,0);if(fwrite(&m s_user,sizeof(ms_user),1,myfile) = 0) - -cout寫入用戶信息失??!e ndl;elsebreak;時(shí)磊5說-fclose(myfile);return 1;int
22、 MSysterm:login()/ 用戶登錄s_user ms_user,ms_user2;int issame = 0, m = 0 , i =0 ;/比較標(biāo)記,循環(huán)使用的變量cout請輸入用戶名:e ndl;cinm s_user. name;cin.clear(); /清除流的錯(cuò)誤標(biāo)記cin.ignore(numeric_limits:max(),n); /清空輸入流myfile=fope n( test1.txt,r);for (i = 1;i=5;i+)if (fread(&ms_user2.isuse,4,1,myfile)=0) 讀取被使用的用戶區(qū) -e ndl;e ndl;c
23、out讀取用戶空間失敗,虛擬磁盤格式錯(cuò)誤,可能已被損壞 fclose(myfile);return -1;if (ms_user2.isuse=0)-fseek(myfile,44,1);con ti nue;elseif (fread(&ms_,20,1,myfile)=0) 讀取名字 -cout讀取用戶空間失敗,虛擬磁盤格式錯(cuò)誤,可能已被損壞 fclose(myfile);return -1;for (m =0 ;m=19;m+)if (ms_user. namem != ms_user2. namem)- - issame = 0; break;elseissame
24、= 1;if (ms_user. namem = 0)-break;if (issame = 1)if (fread(&ms_user2.psd,20,1,myfile)=0) 讀取密碼 - cout讀取密碼失敗!磁盤錯(cuò)誤。 e ndl; fclose(myfile);return -1;時(shí)需Sr彳for (int k=0;k=2;k+)cout請輸入密碼:e ndl;cinm s_user.psd;cin.clear(); /清除流的錯(cuò)誤標(biāo)記cin.ignore(numeric_limits:max(),n); /清空輸入流for (m =0 ;m=19;m+)if (ms_user.psd
25、m != ms_user2.psdm)- -issame = 0; break;elseissame = 1;if (ms_user.psdm = 0)-break;if (issame = 0)cout密碼錯(cuò)誤,請重新輸入。e ndl;elseif (fread(&ms_user2.address,4,1,myfile)=0) 讀取目錄地址 -cout讀取目錄失??!磁盤錯(cuò)誤。e ndl;fclose(myfile);return -1;for (m=0;m=19;m+) 對(duì)對(duì)象 myuser 賦值 myuser. namem = ms_user2 .n amem; myuser.psdm =
26、 ms_user2.psdm; -myuser.listaddress = ms_user2.address;myuser.myaddress = (i-1)*48;fclose(myfile);return 1;/返回登錄成功fclose(myfile);return -2;/密碼錯(cuò)誤fseek(myfile,24,1);fclose(myfile);return -1;void MSysterm:mymain() 主控制程序 時(shí)磊忖呎int m_point=9,myget=0;記錄使用第幾層控制臺(tái),接收函數(shù)返回值 char m_name120,m _n ame220;for (;)if(m
27、_poi nt = 0)-myget=logout();break;coute ndlvv*e ndl;coutvv當(dāng)前目錄下的文件: m_po int;cin.clear(); /清除流的錯(cuò)誤標(biāo)記cin.ignore(numeric_limitsvstreamsize:max(),n); /清空輸入流switch (m_po int) -case 1:if (myuser.listaddress = 0)coutvv您還沒有創(chuàng)建文件!vve ndl;break;coutvv請輸入要查看的文件的名字:(僅限當(dāng)前目錄)vvendl;cinm_n amel;cin.clear(); /清除流的錯(cuò)誤
28、標(biāo)記cin.ignore(numeric_limitsvstreamsize:max(),in); /清空輸入流myget = myuser.viewFile(m _n amel);switch (myget)case 1: coutvv文件查看成功!vve ndl;break;case -1:coutvv磁盤打開失??!vve ndl;break;case -2:coutvv文件不存在!vve ndl;break;default:break;break;/case 1文件打開case 2:myget = myuser.createFile();switch (myget)case 1:cout
29、創(chuàng)建成功! e ndl;break;case -1:cout磁盤打開失??!e ndl;break;case -2:cout目錄空間已滿!endl;break;case -3:cout數(shù)據(jù)空間已滿!e ndl;break;case -4:cout文件名已存在!e ndl;break;default:cout創(chuàng)建文件失敗,原因未知!endl;break;break;/case 2新建文件case 3:if (myuser.listaddress = 0)cout您還沒有創(chuàng)建文件!e ndl;break;cout請輸入要?jiǎng)h除的文件的名字:(僅限當(dāng)前目錄)endl;cinm_n ame1;cin.cl
30、ear(); /清除流的錯(cuò)誤標(biāo)記cin.ignore(numeric_limits:max(),n); /清空輸入流myget = myuser.delFile(m_ name1);switch (myget)case 1:cout文件刪除成功! e ndl;break;case -1:cout磁盤打開失敗!e ndl;break;case -2:cout文件不存在!e ndl;break;case -4:cout文件鎖定!不能刪除!e ndl;break; default:cout未知原因,刪除失??!e ndl;break; break;/case 3刪除文件case 4:if (myuse
31、r.listaddress = 0)cout您還沒有創(chuàng)建文件!e ndl;break;cout請輸入要修改的文件的名字:(僅限當(dāng)前目錄)endl;cinm_n ame1;cin.clear(); /清除流的錯(cuò)誤標(biāo)記cin.ignore(numeric_limits:max(),in); /清空輸入流myget = myuser.revampFile(m_ namel);switch (myget)case 1:cout文件修改成功! e ndl;break;case -1:cout磁盤打開失敗!e ndl;break;case -2:cout文件不存在!e ndl;break;case -4:
32、/cout文件鎖定!無法修改!e ndl;break;case -5:cout輸入內(nèi)容過多!無法修改!e ndl;break;default:/cout未知原因,修改失??!e ndl;break; break;/case 4修改文件case 5:if (myuser.listaddress = 0)cout您還沒有創(chuàng)建文件!e ndl;break;cout請輸入要轉(zhuǎn)換是否鎖定的文件的名字:(僅限當(dāng)前目錄)endl;cinm_n ame1;cin.clear(); /清除流的錯(cuò)誤標(biāo)記cin.ignore(numeric_limits:max(),n); /清空輸入流myget = myuser.
33、myC on vers ion(m_n ame1);switch (myget)case 0:cout文件已轉(zhuǎn)換為鎖定! e ndl; break;case 1:cout文件已轉(zhuǎn)換為自由讀寫! e ndl;break;case -1:cout磁盤打開失??!e ndl;break;case -2:cout文件不存在!e ndl;break;default:時(shí)磊5說-cout未知原因,修改失??! e ndl; break;break;/case 5轉(zhuǎn)換是否鎖定狀態(tài)default:break;/switchint MSysterm:logout() 用戶注銷char word20 = 0;for (
34、int i = 0 ; i=19 ; i+)myuser. namei = wordi; myuser.psdi = wordi;fclose(myfile);cout已注銷! endl;return 1;void MSysterm:outName()打印登陸后的用戶名coutmyuser. namee ndl;Myuserfile.cpp#in clude #i nclude #i nclude #include /用于清除殘留的輸入流#i nclude myuserfile.h#in clude allstruct.husing n amespace std;int MUser:creat
35、eFile() 增加文件s_list ms_list;s_file ms_file;long nowaddress =0 ,f_address10, num_char = 0 ;/目錄循環(huán)記錄變量,數(shù)據(jù)塊地址變量 組,字符個(gè)數(shù)(文件大小)int f_ad_num = 0 , myerr = 0 ,i = 1; /寫入的塊數(shù),是否在最終寫入時(shí)失敗(失敗置1)char f_n ame20 = ,m=0,e=0,f_islock;long oldastaddress = lastaddress ;/上 一個(gè)目錄地址(用于出錯(cuò)回滾)myfile=fope n( test1.txt,r+);if (my
36、file = NULL)時(shí)磊忖呎cout讀取磁盤失??!e ndl;fclose(myfile);return -1;fseek(myfile,48*5,0);文件指針跳到目錄區(qū)for (i=1;i=50;i+,fseek(myfile,40,1), no waddress+) 檢查目錄空間是否足夠if (fread(&ms_list.isuse,4,1,myfile)=0) 讀取是否使用 -cout讀取目錄空間失敗,虛擬磁盤格式錯(cuò)誤,可能已被損壞e ndl;fclose(myfile);return -1;if (ms_list.isuse=O)如果讀取到未使用則跳出檢測-break;if (
37、i=51)cout目錄空間已滿!創(chuàng)建文件失敗endl;fclose(myfile);return -2;fseek(myfile,48*5+44*50,0); 文件指針跳到數(shù)據(jù)區(qū)for (i=1;i=200;i+,fseek(myfile,260,1) 檢查數(shù)據(jù)空間是否足夠(初步檢查)if (fread(&m s_file.isuse,4,1,myfile)=0)/ 讀取是否使用 -cout讀取數(shù)據(jù)空間失敗,虛擬磁盤格式錯(cuò)誤,可能已被損壞e ndl;fclose(myfile);return -1;if (ms_file.isuse=O)如果有空白的數(shù)據(jù)塊則跳出-break;if (i=201
38、)cout數(shù)據(jù)空間已滿!創(chuàng)建文件失敗e ndl;fclose(myfile);return -2;cout請輸入文件名(字母和數(shù)字,最多19個(gè)字符):endl;cinf_n ame;cin.clear(); /清除流的錯(cuò)誤標(biāo)記cin.ignore(numeric_limits:max(),n); /清空輸入流fseek(myfile,48*5,0);文件指針跳到目錄區(qū)for (i=1;i=50;i+)檢查文件名是否被使用if (fread(&ms_list,sizeof(ms_list),1,myfile)=0)讀取目錄 - -cout讀取目錄空間失敗,虛擬磁盤格式錯(cuò)誤,可能已被損壞 fclo
39、se(myfile);return -1;e ndl;if (ms_list.isuse = 1)/如果讀取到未使用則跳出檢測-if( isSame(f_ name,msist .n ame) = 1) - - fclose(myfile); return -4;for (;)cout文件由多少個(gè)字符 m組成?(必須小于2550個(gè)字符)endl; cinnu m_char;cin.clear(); /清除流的錯(cuò)誤標(biāo)記cin.ignore(numeric_limits:max(),n); /清空輸入流if (num _char = 2550)-break;cout文件長度必須小于 2550個(gè)字符
40、。endl;ms_list.poi ntsize = nu m_char;cout文件是否鎖定? y鎖定/ n(或其他)自由讀寫 f_islock;cin.clear(); /清除流的錯(cuò)誤標(biāo)記cin.ignore(numeric_limits:max(),in); /清空輸入流if( f_islock = y | f_islock = Y)- -msist.isfile = 0;-elsems_list.isfile =1;-fseek(myfile,48*5+44*50,0); 文件指針跳到數(shù)據(jù)區(qū)for ( i=0 ; i=199 & f_ad_ num =( num_char/255);
41、i+ , fseek(myfile,260,1) )/檢查數(shù)據(jù)空間是否足夠-if (fread(&m s_file.isuse,4,1,myfile)=0) -cout讀取數(shù)據(jù)空間失敗,虛擬磁盤格式錯(cuò)誤,可能已被損壞e ndl;fclose(myfile);return -1;if (ms_file.isuse=0)/ 如果有空白區(qū)塊-f_addressf_ad_ num = i*264+48*5+44*50;記錄下當(dāng)前空白區(qū)塊的絕對(duì)物理地址-f_ad_num+;先用后加if (f_ad_num = (num_char/255) 空白的地址不足- -cout沒有足夠的磁盤空間,創(chuàng)建失??!e n
42、dl;fclose(myfile);return -3;ms_file.isuse = 1; int k = 0;/for循環(huán)變量for (i=0 ; if_ad_ num ; i+) -if ( i 255)/數(shù)據(jù)太多,一個(gè)區(qū)塊放不了if ( fwrite(&m s_file.isuse,4,1,myfile) = 0)/ 寫入已被使用 -cout數(shù)據(jù)模塊寫入isuse失敗e ndl; myerr = 1;for ( k =1 ; k =255 ; k+)/ 寫入數(shù)據(jù)if ( fwrite(&m,1,1,myfile) =0)cout數(shù)據(jù)模塊寫入內(nèi)容失敗endl; myerr = 1;if ( fwrite( &e,1,1,myfile) = 0)/寫入結(jié)束符cout數(shù)據(jù)模塊寫入結(jié)束符失敗endl; myerr = 1;if ( fwrite(&m s_file. ne
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 行政法學(xué)多元思維試題及答案
- 火災(zāi)護(hù)理的應(yīng)急預(yù)案(3篇)
- 2025年消費(fèi)趨勢與戰(zhàn)略調(diào)整試題及答案
- 代碼優(yōu)化技術(shù)及其影響試題及答案
- 2025年法學(xué)概論考試準(zhǔn)備指南與試題及答案
- 2025年軟考設(shè)計(jì)師常識(shí)回顧試題及答案
- 技術(shù)員考試如何應(yīng)對(duì)變化與試題及答案
- 設(shè)計(jì)思維在程序開發(fā)中的應(yīng)用試題及答案
- 預(yù)判可能的2024年高考數(shù)學(xué)試題及答案
- 期末詞匯專項(xiàng)檢測卷(試卷)-2024-2025學(xué)年人教精通版英語五年級(jí)下冊(含答案)
- SWAN產(chǎn)品數(shù)據(jù)格式說明-包括D131、D35、自動(dòng)站時(shí)序數(shù)據(jù)、SCIT、TITAN
- 物流專線協(xié)議書簡短 物流專線合作協(xié)議
- 上海中考數(shù)學(xué)考試大綱
- 一種改進(jìn)的ip-q諧波電流檢測方法
- 獨(dú)醒之累:郭嵩燾與晚清大變局
- 監(jiān)理回復(fù)單工程文件
- 酒店運(yùn)營方案ppt
- 印章(印鑒)交接單模板
- GB/T 15114-2023鋁合金壓鑄件
- 安全儀表系統(tǒng)(SIS)培訓(xùn)
- 文獻(xiàn)名稱(中文)-化工工業(yè)離心泵
評(píng)論
0/150
提交評(píng)論