c語言學(xué)習(xí)c語言課件第12章

c語言學(xué)習(xí)c語言課件第12章

ID:45062178

大?。?53.66 KB

頁數(shù):42頁

時(shí)間:2019-11-08

c語言學(xué)習(xí)c語言課件第12章_第1頁
c語言學(xué)習(xí)c語言課件第12章_第2頁
c語言學(xué)習(xí)c語言課件第12章_第3頁
c語言學(xué)習(xí)c語言課件第12章_第4頁
c語言學(xué)習(xí)c語言課件第12章_第5頁
資源描述:

《c語言學(xué)習(xí)c語言課件第12章》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、第12章文件本章學(xué)習(xí)目標(biāo)了解文件的概念。熟練掌握文件類型指針的使用。掌握文件的基本操作。[Return]在程序運(yùn)行時(shí),程序本身和數(shù)據(jù)一般都存放在內(nèi)存中。當(dāng)程序運(yùn)行結(jié)束后,存放在內(nèi)存中的數(shù)據(jù)被釋放。如果需要長(zhǎng)期保存程序運(yùn)行所需的原始數(shù)據(jù),或程序運(yùn)行產(chǎn)生的結(jié)果,就必須以文件形式存儲(chǔ)到外部存儲(chǔ)介質(zhì)上。12.1C語言文件概述12.2文件的打開與關(guān)閉12.3文件的讀寫12.4文件定位12.5文件的出錯(cuò)檢測(cè)12.1C語言文件概述1.文件與文件名文件是指存放在外部存儲(chǔ)介質(zhì)上的數(shù)據(jù)集合。為標(biāo)識(shí)一個(gè)文件,每個(gè)文件都必須有一個(gè)文件名,其一般結(jié)構(gòu)為:主文件名[.擴(kuò)展名]文

2、件命名規(guī)則,遵循操作系統(tǒng)的約定。2.文件分類可以從不同的角度對(duì)文件進(jìn)行分類:(1)根據(jù)文件的內(nèi)容,可分為程序文件和數(shù)據(jù)文件,程序文件又可分為源文件、目標(biāo)文件和可執(zhí)行文件。(2)根據(jù)文件的組織形式,可分為順序存取文件和隨機(jī)存取文件。12.1.1文件的概念及分類(3)根據(jù)文件的存儲(chǔ)形式,可分為ASCII碼文件和二進(jìn)制文件。ASCII碼文件的每1個(gè)字節(jié)存儲(chǔ)1個(gè)字符,因而便于對(duì)字符進(jìn)行逐個(gè)處理。但一般占用存儲(chǔ)空間較多,而且要花費(fèi)轉(zhuǎn)換時(shí)間(二進(jìn)制與ASCII碼之間的轉(zhuǎn)換)。二進(jìn)制文件是把內(nèi)存中的數(shù)據(jù),原樣輸出到磁盤文件中??梢怨?jié)省存儲(chǔ)空間和轉(zhuǎn)換時(shí)間,但1個(gè)字節(jié)

3、并不對(duì)應(yīng)1個(gè)字符,不能直接輸出字符形式。12.1.2文件的操作流程通過程序?qū)ξ募M(jìn)行操作,達(dá)到從文件中讀數(shù)據(jù)或向文件中寫數(shù)據(jù)的目的,涉及到的操作有:建立文件、打開文件、從文件中讀數(shù)或向文件中寫數(shù)、關(guān)閉文件等。一般遵循的步驟為:(1)建立/打開文件(2)從文件讀取數(shù)據(jù)或向文件寫數(shù)據(jù)。(3)關(guān)閉文件打開文件是進(jìn)行文件讀寫操作之前的必要步驟。打開文件就是將指定的文件與程序聯(lián)系起來,為下面進(jìn)行的文件讀寫做好準(zhǔn)備。當(dāng)為進(jìn)行寫操作而打開一個(gè)文件時(shí),如果這個(gè)文件不存在,則系統(tǒng)會(huì)建立這個(gè)文件,并打開它。當(dāng)為進(jìn)行讀操作而打開一個(gè)文件時(shí),文件應(yīng)該是已經(jīng)存在的,否則會(huì)出錯(cuò)

4、。所謂讀文件是指,將磁盤文件中的數(shù)據(jù)傳送到計(jì)算機(jī)內(nèi)存的操作。所謂寫文件是指,從計(jì)算機(jī)內(nèi)存向磁盤文件中傳送數(shù)據(jù)的操作。關(guān)閉文件就是取消程序與指定的數(shù)據(jù)文件之間的聯(lián)系,表示文件操作的結(jié)束。所謂緩沖文件系統(tǒng)是指,系統(tǒng)自動(dòng)地在內(nèi)存區(qū)為每個(gè)正在使用的文件開辟一個(gè)緩沖區(qū)。從內(nèi)存向磁盤輸出數(shù)據(jù)時(shí),必須首先輸出到緩沖區(qū)中。待緩沖區(qū)裝滿后,再一起輸出到磁盤文件中。從磁盤文件向內(nèi)存讀入數(shù)據(jù)時(shí),則正好相反:首先將一批數(shù)據(jù)讀入到緩沖區(qū)中,再從緩沖區(qū)中將數(shù)據(jù)逐個(gè)送到程序數(shù)據(jù)區(qū)。12.1.3緩沖文件系統(tǒng)與非緩沖文件系統(tǒng)1.緩沖文件系統(tǒng)所謂“非緩沖文件系統(tǒng)”是指系統(tǒng)不自動(dòng)開辟確定

5、大小的緩沖區(qū),而由程序?yàn)槊總€(gè)文件設(shè)定緩沖區(qū)。非緩沖文件系統(tǒng)依賴于操作系統(tǒng),通過操作系統(tǒng)的功能對(duì)文件進(jìn)行讀寫,是系統(tǒng)級(jí)的輸入輸出,它不設(shè)文件結(jié)構(gòu)體指針,只能讀寫二進(jìn)制文件,但效率高、速度快。在過去使用的C版本(如UNIX系統(tǒng)下使用的C)支持上述兩種對(duì)文件處理的方法,但是ANSIC標(biāo)準(zhǔn)不再包括非緩沖文件系統(tǒng),因此建議大家最好不要選擇它。2.非緩沖文件系統(tǒng)12.1.4文件指針ANSIC為每個(gè)被使用的文件在內(nèi)存開辟一塊用于存放上述信息的小區(qū),利用一個(gè)結(jié)構(gòu)體類型的變量存放。該變量的結(jié)構(gòu)體類型由系統(tǒng)取名為FILE,在頭文件stdio.h中定義如下:typedef

6、struct{shortlevel;/*緩沖區(qū)“滿”或“空”的程度*/unsignedflages;/*文件狀態(tài)標(biāo)志*/charfd;/*文件描述符*/unsignedcharhold;/*如無緩沖區(qū)不讀取字符*/shortbsize;/*緩沖區(qū)的大小*/unsignedchar*baffer;/*緩沖區(qū)的讀寫位置*/unsignedchar*curp;/*文件讀寫位置*/unsignedistemp;/*臨時(shí)文件,指示器*/shorttoken;/*用于有效性的檢查*/}FILE;在操作文件以前,應(yīng)先定義文件類型的指針,定義的一般格式:FILE*指

7、針變量標(biāo)識(shí)符例如:FILE*fp1,*fp2;按照上面的定義,fp1和fp2均為指向結(jié)構(gòu)體類型的指針變量,分別指向一個(gè)可操作的文件,換句話說,一個(gè)文件有一個(gè)文件類型指針,今后對(duì)文件的訪問,會(huì)轉(zhuǎn)化為針對(duì)文件類型指針的操作。12.2文件的打開與關(guān)閉12.2.1文件的打開──fopen()函數(shù)1.用法:FILE*fopen(“文件名”,“操作方式”);2.功能:返回一個(gè)指向指定文件的指針。 3.函數(shù)原型:stdio.h。注:對(duì)文件操作的庫函數(shù),函數(shù)原型均在頭文件stdio.h中。后續(xù)函數(shù)不再贅述。對(duì)文件進(jìn)行操作之前,必須先打開該文件;使用結(jié)束后,應(yīng)立即關(guān)閉

8、,以免數(shù)據(jù)丟失。C語言規(guī)定了標(biāo)準(zhǔn)輸入輸出函數(shù)庫,用fopen()函數(shù)打開一個(gè)文件,用fclose()函數(shù)關(guān)閉

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。