




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
佛山科學(xué)技術(shù)學(xué)院課程設(shè)計(jì)用紙PAGE課程設(shè)計(jì)說明書設(shè)計(jì)名稱:操作系統(tǒng)課程設(shè)計(jì)題目:文件訪問接口設(shè)計(jì) 學(xué)生姓名:余德威專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)班級(jí):13計(jì)算機(jī)1班學(xué)號(hào):2013314111指導(dǎo)教師:任朝暉日期:2015年9月18日課程設(shè)計(jì)任務(wù)書設(shè)計(jì)題目文件訪問接口設(shè)計(jì) 目的與要求本設(shè)計(jì)的目的是通過BIOS調(diào)用設(shè)計(jì)簡(jiǎn)單的文件訪問接口,使學(xué)生掌握程序接口的設(shè)計(jì)方法。要求學(xué)生在熟悉比BIOS、DOS操作系統(tǒng)的中斷接口及程序接口的基礎(chǔ)上,利用C語言設(shè)計(jì)簡(jiǎn)單的文件訪問接口,最后通過程序驗(yàn)證接口的正確性。設(shè)計(jì)內(nèi)容利用C語言設(shè)計(jì),具體包括:1、基本文件內(nèi)容輸入2、基本文件內(nèi)容輸出3、創(chuàng)建文件4、打開文件5、關(guān)閉文件6、文件緩沖區(qū)管理7、文件句柄管理8、讀順序文件9、寫順序文件10、讀隨機(jī)文件11、寫隨機(jī)文件12、文本文件操作驗(yàn)證程序上述功能由兩部分程序驗(yàn)證,中斷駐留程序和驗(yàn)證程序。首先運(yùn)行中斷駐留程序,然后運(yùn)行驗(yàn)證程序得到預(yù)期結(jié)果。完成方式獨(dú)立完成:完成設(shè)計(jì)內(nèi)容全部12個(gè)小項(xiàng)或至少3項(xiàng)以上。具體要求本設(shè)計(jì)的目的是通過BIOS調(diào)用設(shè)計(jì)簡(jiǎn)單的文件訪問接口,使學(xué)生掌握程序接口的設(shè)計(jì)方法。要求學(xué)生在熟悉比BIOS、DOS操作系統(tǒng)的中斷接口及程序接口的基礎(chǔ)上,利用C語言設(shè)計(jì)簡(jiǎn)單的文件訪問接口,最后通過程序驗(yàn)證接口的正確性。進(jìn)度安排依照教學(xué)計(jì)劃,課程設(shè)計(jì)時(shí)間為:2周。要求講解、資料查找、系統(tǒng)分析,概要設(shè)計(jì)(2天)系統(tǒng)詳細(xì)設(shè)計(jì)、功能設(shè)計(jì)(2天)算法實(shí)現(xiàn)、編程調(diào)試(5天)功能演示、資料整理、課程設(shè)計(jì)說明書編寫。(1天)完成后應(yīng)上交的材料課程設(shè)計(jì)說明書紙質(zhì)文檔總評(píng)成績(jī)指導(dǎo)教師簽名日期年月日系主任審核日期年月日佛山科學(xué)技術(shù)學(xué)院課程設(shè)計(jì)用紙PAGE19佛山科學(xué)技術(shù)學(xué)院課程設(shè)計(jì)用紙目錄一、程序概述 11.1完成的任務(wù) 11.2解決的問題 1二、概念原理 12.1基本概念 12.2基本原理 2三、總體設(shè)計(jì) 33.1實(shí)現(xiàn)方法 33.2技術(shù)路線 3四、詳細(xì)設(shè)計(jì) 34.1主要函數(shù) 3五、完成情況 3六、使用說明 4七、設(shè)計(jì)總結(jié) 107.1系統(tǒng)特色 107.2經(jīng)驗(yàn)教訓(xùn) 107.3實(shí)踐感受 10參考資料 10附錄 11PAGE1一、程序概述1.1完成的任務(wù)本設(shè)計(jì)要求編寫一個(gè)簡(jiǎn)單的文件訪問接口設(shè)計(jì),利用C語言,DOS與BIOS中斷調(diào)用進(jìn)行設(shè)計(jì)。主要完成要求中所提到的功能如:創(chuàng)建文件,刪除文件,打開文件,關(guān)閉文件,基本文件內(nèi)容輸入,基本文件內(nèi)容輸出,讀順序文件,寫順序文件,文本文件操作驗(yàn)證程序,文件緩沖區(qū)管理的實(shí)現(xiàn)。1.2解決的問題在設(shè)計(jì)過程遇到了以下的問題:一是有關(guān)文件的操作,如文件夾的創(chuàng)建與刪除;二是在理解了中斷的意義之后,進(jìn)行中斷函數(shù)如int86(),int86x(),intdos(),intdos()等函數(shù)的調(diào)用有點(diǎn)模糊。解決的過程:通過在網(wǎng)上查閱了相關(guān)資料及參考在圖書館借的《C高級(jí)實(shí)用設(shè)計(jì)》和上學(xué)期學(xué)過的匯編語言的書后,再有不懂的疑惑向老師解答和與同學(xué)討論解決方法。有關(guān)函數(shù)的調(diào)用參數(shù)的設(shè)計(jì),基本上是基于這些:結(jié)構(gòu)體WORDREGS,BYTEREGS,SREGS,聯(lián)合體REGS,文件屬性字節(jié),以及匯編語言中int21Hdos系統(tǒng)功能調(diào)用中中斷類型(主要是21H)以及調(diào)用功能號(hào)的查詢和設(shè)置。下面主要介紹上述提及的幾個(gè)結(jié)構(gòu)體跟聯(lián)合體://以字作為單位的寄存器所組合的結(jié)構(gòu)體StructWORDREGS{Unsignedintax,bx,cx,dx,si,di,cflag,flags;};//以字節(jié)作為單位的寄存器做組合的結(jié)構(gòu)體StructBYTEREGS{Unsignedcharal,ah,bl,bh,cl,ch,dl,dh;};//由上述兩個(gè)結(jié)構(gòu)體所組合的共用體(聯(lián)合體)UnionREGS{StructWORDREGSx;StructBYTEREGSh;};//由段寄存器組合的結(jié)構(gòu)體StructSREGS{Unsignedintes,cs,ss,ds;};二、概念原理2.1基本概念中斷中斷:顧名思義,是指當(dāng)出現(xiàn)需要時(shí),CPU暫時(shí)停止當(dāng)前程序的執(zhí)行轉(zhuǎn)而執(zhí)行處理新情況的程序和執(zhí)行過程。即在程序運(yùn)行過程中,系統(tǒng)出現(xiàn)了一個(gè)必須由CPU立即處理的情況,此時(shí),CPU暫時(shí)中止程序的執(zhí)行轉(zhuǎn)而處理這個(gè)新的情況的過程就叫做中斷。本課題中涉及的為dos中斷跟bios中斷。文件訪問接口所謂訪問接口,實(shí)際上即為用戶通過dos狀態(tài)下的提示,鍵入相關(guān)命令后,作為訪問相關(guān)文件操作的中介,即類似一個(gè)中轉(zhuǎn)站。而系統(tǒng)同時(shí)也需要在響應(yīng)了用戶鍵入的命令后執(zhí)行預(yù)先編寫好的相應(yīng)程序,并將程序的執(zhí)行結(jié)果通過中介,即文件訪問接口,輸出給用戶。而事實(shí)上在系統(tǒng)響應(yīng)一次用戶的命令時(shí),系統(tǒng)進(jìn)行了一次IO中斷。中斷駐留程序中斷駐留程序,指的是當(dāng)加載進(jìn)內(nèi)存的程序執(zhí)行完畢后,依然能夠保存產(chǎn)生的臨時(shí)數(shù)據(jù)跟臨時(shí)狀態(tài),而在下一次調(diào)用時(shí)繼續(xù)執(zhí)行。驗(yàn)證程序本課題的驗(yàn)證程序,指的是,當(dāng)用dos,bios中斷調(diào)用編寫好相關(guān)用于文件訪問的函數(shù)并執(zhí)行之后,用C語言高級(jí)的函數(shù)如fopen(),fprintf(),fgetc(),fclose()等函數(shù)來驗(yàn)證上述編寫的訪問函數(shù)是否可行。本課題中用fopen(),fclose()來驗(yàn)證用dos中斷調(diào)用所編寫的函數(shù)CloseFile(),CreateFile()和CloseFile();用fgetc(),fprintf()等函數(shù)來驗(yàn)證用dos中斷調(diào)用所編寫的WriteToFile()和ReadFromFile()函數(shù);除此之外,像ftell(),fseek()等的驗(yàn)證是同樣的道理。只需基于上述由dos,bios中斷調(diào)用所編寫的函數(shù).系統(tǒng)調(diào)用系統(tǒng)調(diào)用,顧名思義,說的是操作系統(tǒng)提供給用戶程序調(diào)用的一組“特殊”接口。用戶程序可以通過這組“特殊”接口來獲得操作系統(tǒng)內(nèi)核提供的服務(wù),比如用戶可以通過文件系統(tǒng)相關(guān)的調(diào)用請(qǐng)求系統(tǒng)打開文件、關(guān)閉文件或讀寫文件,可以通過時(shí)鐘相關(guān)的系統(tǒng)調(diào)用獲得系統(tǒng)時(shí)間或設(shè)置定時(shí)器等。從邏輯上來說,系統(tǒng)調(diào)用可被看成是一個(gè)內(nèi)核與用戶空間程序交互的接口,它好比一個(gè)中間人,把用戶進(jìn)程的請(qǐng)求傳達(dá)給內(nèi)核,待內(nèi)核把請(qǐng)求處理完畢后再將處理結(jié)果送回給用戶空間。2.2基本原理本課題的運(yùn)行結(jié)果,首先是在運(yùn)行開始時(shí)給定了10個(gè)選擇開關(guān),供用戶選擇,每當(dāng)接收一次用戶的選擇時(shí),系統(tǒng)將進(jìn)行一次的IO中斷,之后執(zhí)行相應(yīng)的中斷服務(wù)程序,在這里是指由dos,bios中斷調(diào)用編寫好的函數(shù),調(diào)用結(jié)束時(shí),將臨時(shí)結(jié)果保存,并退出中斷,繼續(xù)響應(yīng)用戶的選擇,直到用戶選擇了退出。如下圖所示:圖2-1三、總體設(shè)計(jì)3.1實(shí)現(xiàn)方法程序通過選擇開關(guān)switch...case將用dos,bios調(diào)用編寫的函數(shù)組合起來供用戶做出選擇。在對(duì)應(yīng)處理用戶的選擇編寫的函數(shù)中,主要的核心是dos功能中斷調(diào)用函數(shù)的編寫,其中包括中斷類型號(hào),中斷功能調(diào)用號(hào)等的設(shè)置,以及響應(yīng)用戶選擇后中斷服務(wù)程序的編寫。另外,可以通過參看當(dāng)前工作目錄下的文件信息或者通過Validate開頭的相關(guān)函數(shù)進(jìn)行程序運(yùn)行結(jié)果的驗(yàn)證3.2技術(shù)路線整個(gè)程序的設(shè)計(jì)流程,圍繞著bios,dos功能中斷調(diào)用這一主線,編寫好相關(guān)文件操作函數(shù),在響應(yīng)用戶選擇之后,對(duì)應(yīng)執(zhí)行相關(guān)的函數(shù)四、詳細(xì)設(shè)計(jì)4.1主要函數(shù)IntOperOfSel():用于顯示可供用戶選擇的功能,并提示用戶作出相應(yīng)的功能選擇VoidCreateFile(charfilename[80]):用于創(chuàng)建一個(gè)新的文件:根據(jù)用戶輸入的文件名進(jìn)行文件的創(chuàng)建,如果文件創(chuàng)建失敗:如磁盤空間已滿或者已經(jīng)存在該文件,即創(chuàng)建失敗IntDeleteFile(charfilename[80]):用于刪除一個(gè)文件,如果刪除成功,將返回文件代號(hào),否則刪除失?。嚎赡苁遣淮嬖谠撐募蘒ntOpenFile(charfilename[80]):用于打開一個(gè)文件,如果打開成功,則返回文件代號(hào),否則打開失敗,可能是不存在該文件VoidCloseFile(filename[80]): 用于關(guān)閉一個(gè)文件VoidWriteToFile(filename[80]):用于寫順序文件基本文件內(nèi)容的輸入以及文件緩沖區(qū)的管理:首先根據(jù)用戶輸入的文件名打開一個(gè)文件,如果存在該文件,則打開成功,開始寫入內(nèi)容,此時(shí)繼續(xù)接受用戶輸入的內(nèi)容,注意,輸入直到用戶鍵入回車鍵即表示輸入完畢,此時(shí)將輸入的內(nèi)容根據(jù)文件緩沖區(qū)管理規(guī)則將用戶輸入的內(nèi)容進(jìn)行存儲(chǔ)至指定文件名的文件中VoidReadFromFile(filename[80]):用于讀順序文件基本文件內(nèi)容的輸出以及文件緩沖區(qū)的管理:從指定的文件中讀取文件中的內(nèi)容,并輸出;VoidValidateOpenFile(charfilename[80]):用于驗(yàn)證上述文件訪問函數(shù)編寫的正確性:用于驗(yàn)證創(chuàng)建文件打開文件是否成功VoidValidateReadFile(charfilename[80]):用于驗(yàn)證上述文件訪問函數(shù)編寫的正確性:用于驗(yàn)證上述中WriteToFile(filename[80])以及ReadFromFile(filename[80]):函數(shù)4.2引用函數(shù)Clrscr():用于清空屏幕的作用五、完成情況本程序完成了其中的9項(xiàng),能夠?qū)崿F(xiàn)文件的創(chuàng)建,打開,關(guān)閉,基本文件內(nèi)容的輸入,輸出,文件緩沖區(qū)的管理,以及文本文件的驗(yàn)證程序,寫順序文件,讀順序文件。六、使用說明運(yùn)行成功后進(jìn)行首頁,開始接受用戶的選擇圖5-1接著進(jìn)行相應(yīng)功能選項(xiàng)前面對(duì)應(yīng)數(shù)字的輸入:1號(hào)功能:為創(chuàng)建一個(gè)新的文件圖5-2查看目錄,目錄下果然生成my文件,所以文件創(chuàng)建成功;圖5-3當(dāng)該文件已經(jīng)存在時(shí),再創(chuàng)建該文件時(shí),會(huì)提示文件已存在,創(chuàng)建已失??;圖5-42號(hào)功能:刪除文件若文件不存在,則操作失??;否則,文件被刪除,如下圖:yuyu文件刪除成功;圖5-5圖5-63號(hào)打開文件功能打開已存在的文件,顯示打開文件成功。圖5-7圖5-8若輸入的文件是不存在的,會(huì)提示打開操作失??;圖5-94號(hào)功能:關(guān)閉文件圖5-105號(hào)功能:寫入文件的內(nèi)容,如下在文件中輸入wearetheworld圖5-11圖5-126號(hào)功能:讀出文件內(nèi)容圖5-137號(hào)功能:確認(rèn)文件是否打開圖5-148號(hào)功能:從文件讀內(nèi)容輸出圖5-159號(hào)功能:清屏結(jié)果將出現(xiàn)清空屏幕的效果圖5-16圖5-170號(hào)功能:退出圖5-18七、設(shè)計(jì)總結(jié)7.1系統(tǒng)特色在本系統(tǒng)中已初步實(shí)現(xiàn)一個(gè)可訪問的文件接口,能夠正常的解析命令并執(zhí)行,在解析命令方面,采用中斷函數(shù)調(diào)用以及功能類型號(hào)選擇設(shè)置的形式,達(dá)到直接與底層“打交道”的作用,效率比較高。7.2經(jīng)驗(yàn)教訓(xùn)由于在開始做操作系統(tǒng)課程設(shè)計(jì)時(shí),對(duì)要選擇的題目,自己沒有很快確定下來,所以時(shí)而找找這道題的資料,時(shí)而找找第三題的資料,又看看有參考樣本的第一道題,這過程中確實(shí)耽誤了不少,但同時(shí)也讓我明白,目標(biāo)的重要性,只有有了目標(biāo),奮斗起來才會(huì)快且成長多,所以一旦定下來任務(wù),就加把勁地把它做完;不懂就想辦法把它搞懂。另外,由于這次是比較偏低層,所以,很多我們平常調(diào)用的函數(shù)不能用到,確實(shí)有點(diǎn)不適,也讓我明白現(xiàn)在的我存在的依賴性及知識(shí)點(diǎn)的不足。所以,在接下來的時(shí)段里,我要加油,加把勁充實(shí)自己。遇到問題時(shí)多與老師及同學(xué)討論,這樣很有利于自己跳出思維定勢(shì)。7.3實(shí)踐感受每次的課程設(shè)計(jì)對(duì)我們來說,都是課堂知識(shí)所學(xué)的一個(gè)深化,在實(shí)踐這個(gè)過程中,我們不免會(huì)遇到許多我們未曾想過的問題,但是,我們無須害怕,因?yàn)槲覀冃枰砷L,我們需要養(yǎng)成遇到問題,能分析問題,進(jìn)而解決問題,這樣當(dāng)我們的課程設(shè)計(jì)完成了,當(dāng)我們的學(xué)業(yè)完成了,我們也就漸漸養(yǎng)成了如何解決問題的思維及如何去做的行動(dòng)觀。這次的課程設(shè)計(jì),讓我看到了我上學(xué)期所學(xué)知識(shí)的不牢固,讓我知道我上學(xué)期的懶惰成為了我現(xiàn)在成長的阻礙。操作系統(tǒng)這門課程的理論性很強(qiáng),如果單單靠我們上學(xué)期所學(xué)的理論知識(shí),完全不足于我們使用,所以,無論是為了什么,都得學(xué)著把操作系統(tǒng)的知識(shí)實(shí)踐化,無論是文件訪問接口設(shè)計(jì)還是操作系統(tǒng)命令接口,都有它存在的意義;而且通過此次的課程設(shè)計(jì),認(rèn)識(shí)了討論的重要性,個(gè)人的力量有限,如果沒有團(tuán)隊(duì)的話,很多事情都是很難完成的,三個(gè)臭皮匠頂過一個(gè)諸葛亮。如果遇到了一個(gè)人難以解決,那么最好是提出來與伙伴或者同學(xué)一同探討,這不但能知道別人的想法,也能解決自己的困惑,何樂而不為啊?參考資料1、《操作系統(tǒng)實(shí)驗(yàn)指導(dǎo)》任愛華李鵬劉方毅清華大學(xué)出版社2、《C高級(jí)編程及實(shí)例分析》王為青劉變紅編著人民郵電出版社3、《C高級(jí)實(shí)用程序設(shè)計(jì)》王世元編著清華大學(xué)出版社4、《80x86匯編語言程序設(shè)計(jì)》沈美明,溫冬嬋編著,清華大學(xué)出版社5、《操作系統(tǒng)實(shí)驗(yàn)教程——核心技術(shù)與編程實(shí)例》顧寶根王立松顧喜梅科學(xué)出版社附錄/*時(shí)間:2015年09月07日程序:文件訪問接口設(shè)計(jì)班級(jí):13計(jì)算機(jī)1班姓名:余德威學(xué)號(hào):2013314111*/#include<stdio.h>#include<conio.h>#include<stdlib.h>#include<process.h>#include<dos.h>#include<bios.h>#defineINTER0x21#defineNum80#defineCNum9//選擇功能intOperOfSel(){ printf("\n\nFunctionOfSelection\n"); printf("**********************************************************************\n"); printf("|| ||\n"); printf("||1Createafile@@ ||\n"); printf("★2Deleteafile-★ \n"); printf("★☆★3Openafile~★☆★\n"); printf("★☆★☆★4Closeafile★☆★☆★\n"); printf("★☆★5Inputcontentstofile★☆★\n"); printf("★6Outputcontentsfromfile★\n"); printf("||7Validatethefileisopenornot||\n"); printf("||8Validatethereadingcontentsfromfile ||\n"); printf("||9Cleanthescreen||\n"); printf("||0Exit||\n"); printf("|| ||\n"); printf("/\\/\\\n"); printf("\nFunctionOfSelection"); intsel; printf("\nInputYourSelction:"); scanf("%d",&sel); returnsel;}//創(chuàng)文件voidCreateFile(charfilename[80]){ unionREGSinregs,outregs; structSREGSsegregs; inregs.h.ah=0x5B; //創(chuàng)建文件的中斷指令是5B inregs.x.dx=FP_OFF(filename); //設(shè)置段地址和有效地址 segregs.ds=FP_SEG(filename); inregs.x.cx=0; //設(shè)置文件屬性是0;cx文件屬性 int86x(INTER,&inregs,&outregs,&segregs); if(outregs.x.ax==2) { printf("FailToCreateNewFile\n"); return; } if(outregs.x.ax==80) { printf("Failtocreatefile:%sThefilehasbennexisted\n",filename); return; } printf("CreateNewFile:%sSuccessfully!\n",filename); printf("TheFile'sAttributeis:%d\n",outregs.x.cx); printf("TheFilecodeis:%d\n",outregs.x.ax);}//刪除文件intDeleteFile(charfilename[80]){ unionREGSinregs,outregs; structSREGSsegregs; inregs.h.ah=0x41; //刪除文件的中斷指令是41 inregs.x.dx=FP_OFF(filename); segregs.ds=FP_SEG(filename); intdosx(&inregs,&outregs,&segregs); intresult=outregs.x.ax; returnresult;}//打開文件intOpenFile(charfilename[80]){ unionREGSinregs,outregs; structSREGSsegregs; intresult; inregs.h.ah=0x3D; inregs.x.dx=FP_OFF(filename); segregs.ds=FP_SEG(filename); inregs.h.al=2;//設(shè)置文件路徑 int86x(INTER,&inregs,&outregs,&segregs); result=outregs.x.ax; returnresult;}//關(guān)閉文件voidCloseFile(charfilename[80]){ unionREGSinregs,outregs; structSREGSsegregs; intresult; intFileCode; inregs.h.ah=0x3D; //打開文件用于讀,寫或補(bǔ)充 inregs.x.dx=FP_OFF(filename); segregs.ds=FP_SEG(filename); inregs.h.al=2; int86x(INTER,&inregs,&outregs,&segregs); result=outregs.x.ax; if(2==result) { printf("\nFailtoclosethefile:%sItmaynotexist\n",filename); } else { FileCode=outregs.x.ax; inregs.h.ah=0x3E; //強(qiáng)迫清除所有緩沖區(qū),更新目錄 inregs.x.bx=FileCode; intrel=intdos(&inregs,&outregs); printf("\nCloseFile:%sSuccessfully!rel=%d\n",filename,rel); }}//在寫入文件內(nèi)容voidWriteToFile(charfilename[80]){ unionREGSinregs,outregs; structSREGSsegregs; intresult; intFileCode; charWriteContents[CNum]; inregs.h.ah=0x3D; inregs.x.dx=FP_OFF(filename); segregs.ds=FP_SEG(filename); inregs.h.al=2; int86x(INTER,&inregs,&outregs,&segregs); result=outregs.x.ax; if(2==result) { printf("\nCannotinputcontentstofile:%s!Itmaynotexist.\n",filename); } else { getchar(); printf("\nInputTheWrittingContents:\n"); intcount=0; inttemp=0; intsumChar=0; for(inti=0;i<=CNum-1;i++) { if(count==1) { WriteContents[i]=temp; i++; count=0; } scanf("%c",&WriteContents[i]); if(WriteContents[i]=='\n') { break; } if(i==CNum-1) { FileCode=result; inregs.h.ah=0x40;//寫文件或設(shè)備 inregs.x.dx=FP_OFF(WriteContents); segregs.ds=FP_SEG(WriteContents); inregs.x.bx=FileCode; inregs.x.cx=i; intdosx(&inregs,&outregs,&segregs); temp=WriteContents[i]; count=count+1; i=-1; sumChar+=outregs.x.ax; } } FileCode=result; inregs.h.ah=0x40; inregs.x.dx=FP_OFF(WriteContents); segregs.ds=FP_SEG(WriteContents); inregs.x.bx=FileCode; inregs.x.cx=i; intdosx(&inregs,&outregs,&segregs); sumChar+=outregs.x.ax; printf("\n\nThenumberofcontentsyouhavewritetofileare:%d\n",sumChar); }}//讀取文件中內(nèi)容voidReadFromFile(charfilename[80]){ unionREGSinregs,outregs; structSREGSsegregs; intresult; charReadContents[CNum*1024]; inregs.h.ah=0x3D; inregs.x.dx=FP_OFF(filename); segregs.ds=FP_SEG(filename); inregs.h.al=2; intdosx(&inregs,&outregs,&segregs); result=outregs.x.ax; if(2==result) { printf("\nCannotreadcontentsfromfile:%s!Thefilemaynotexist.\n",filename); } else { inregs.x.bx=result; inregs.h.ah=0x3F; inregs.x.dx=FP_OFF(ReadContents); segregs.ds=FP_SEG(ReadContents); inregs.x.cx=1024; intdosx(&inregs,&outregs,&segregs); printf("RealNumberOfReadCharactersinfile:%s:%d\n",filename,outregs.x.ax); printf("\nTheContentsOfFile:%sAreListedBelow:\n",filename); for(inti=0;i<outregs.x.ax;i++) { printf("%c",ReadContents[i]); } printf("\n"); }}//確認(rèn)文件是否打開voidValidateOpenFile(charfilename[80]){ FILE*fp; fp=fopen(filename,"r"); if(!fp) { printf("\nOpenfile:%sFailly!failtovalidateopenfilefunction.\n",filename); return; } else { printf("\nOpenfile:%sSuccessfully!successtovalidateopenfilefunction.\n",filename); } fclose(fp);}//確認(rèn)文件voidValidateReadFile(charfilename[80]){ FILE*fp; fp=fopen(filename,"r"); if(!fp) { printf("\nCannotreadcontentsfromfile:%sItmaynotexist.\n",filename); return; } else { intcount=0; printf("\nReadcontentsfromfile:%ssuccessfully!Thebelowarethecontents.\n",filename); charch; while((ch=fgetc(fp))!=EOF) { count++; printf("%c",ch); } printf("\n"); printf("\nThetotalnumberofcontentsofthefile:%sare:%d.\n",filename,count); } fclose(fp);}intmain(){ clrscr(); charCreateFileName[Num]; charDeleteFileName[Num]; charOpenFileName[Num]; charCloseFileName[Num]; charWrittingFileName[Num]; charReadingFileName[Num]; charValidateOpenFileName[Num]; charValidateReadFileName[Num]; intsel; do { sel=OperOfSel(); switch(sel) { case0: printf("\nExitthesystem\n"); exit(0); break; case1: printf("\nSelectionOfCreatingANewFile\n"); printf("\nInputthenameoffiletocreate:"); scanf("%s",CreateFileName); CreateFile(CreateFileName); break; case2: printf("\nSelectionOfDeletingAExistingFile\n"); printf("\nInputthenameofexistingfiletodelete:"); scanf("%s",DeleteFileName); intRelOfDel=DeleteFile(DeleteFileName); if(0==RelOfDel) { printf("\nTheFile:%shasbeendeletesuccessfully\n",DeleteFileName); } else { printf("\nCannotdeletethefile:%sItmaynotbeexist\n",DeleteFileName); } break; case3: printf("\nTheSelectionOfOpeningan
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東省肇慶市2014-2015學(xué)年高二上學(xué)期期末考試政治試題(含答案)
- 全媒體時(shí)代的品牌傳播試題及答案
- 提升預(yù)算員工作效率的技巧試題及答案
- 2024消防設(shè)施操作員預(yù)測(cè)試題及答案
- 監(jiān)理工程師考前準(zhǔn)備試題及答案
- 銀行人力資源管理試題及答案
- 預(yù)算員行業(yè)技能文化傳播試題及答案
- 2025-2030中國高純硅砂行業(yè)全景深度解析與未來趨勢(shì)研究報(bào)告
- 2025-2030中國高純度鈦粉行業(yè)現(xiàn)狀調(diào)查與發(fā)展前景趨勢(shì)研究報(bào)告
- 社交媒體的危機(jī)管理試題及答案
- 高校講師個(gè)人學(xué)術(shù)發(fā)展計(jì)劃
- 2025屆四川省成都市高三二診生物試題(原卷版+解析版)
- 2025年度粵醫(yī)云、國培衛(wèi)健全科醫(yī)學(xué)臨床醫(yī)學(xué)2月題目及答案
- 大學(xué)生舞蹈創(chuàng)新創(chuàng)業(yè)計(jì)劃書
- 人教版六年級(jí)下學(xué)期數(shù)學(xué)第四單元《比例》典型題型專項(xiàng)練習(xí)(含答案)
- 河南省駐馬店市2024-2025學(xué)年高一上學(xué)期1月期末英語試題【含答案解析】
- 發(fā)票紅沖申請(qǐng)書
- 大數(shù)據(jù)技術(shù)在醫(yī)療健康領(lǐng)域的應(yīng)用方案設(shè)計(jì)
- 2024年武漢警官職業(yè)學(xué)院高職單招語文歷年參考題庫含答案解析
- 貴州省三級(jí)醫(yī)院評(píng)審標(biāo)準(zhǔn)實(shí)施細(xì)則(2023版)
- 2025屆南通市高三第二次模擬考試數(shù)學(xué)試卷含解析
評(píng)論
0/150
提交評(píng)論