(6.45)-第44課(10.1節(jié)-文件概述)_第1頁
(6.45)-第44課(10.1節(jié)-文件概述)_第2頁
(6.45)-第44課(10.1節(jié)-文件概述)_第3頁
(6.45)-第44課(10.1節(jié)-文件概述)_第4頁
(6.45)-第44課(10.1節(jié)-文件概述)_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

文件概述文件操作文件概述在程序運行時,程序本身和數(shù)據(jù)一般都存放在內(nèi)存中。當(dāng)程序運行結(jié)束后,存放在內(nèi)存中的數(shù)據(jù)被釋放如果需要長期保存程序運行所需的原始數(shù)據(jù),或程序運行產(chǎn)生的結(jié)果,就必須以文件形式存儲到外部存儲介質(zhì)上

文件是指存放在外部存儲介質(zhì)上的數(shù)據(jù)集合每個文件有唯一的文件名(主名.后綴)來標(biāo)識。計算機實現(xiàn)按名對文件進行讀、寫等有關(guān)操作廣義上,操作系統(tǒng)將每一個與主機相聯(lián)的輸入輸出設(shè)備都看作是文件。(顯示器、打印機是輸出文件,鍵盤是輸入文件)數(shù)據(jù)文件的存儲形式文本文件:每個字符用一個ASCII碼存儲(即一個字符占一個字節(jié))二進制文件:以數(shù)據(jù)在內(nèi)存中的形式原樣存于磁盤存儲整數(shù)1268例‘1’的ASCII碼00110001001100100011011000111000‘2’的ASCII碼‘6’的ASCII碼‘8’的ASCII碼文本文件形式00000100111101001268的二進制數(shù)(補碼)二進制文件形式說明文本文件的每1個字節(jié)存儲1個字符,因而便于對字符進行逐個處理。但一般占用存儲空間較多,而且要花費轉(zhuǎn)換時間(二進制與ASCII碼之間的轉(zhuǎn)換)二進制文件是把內(nèi)存中的數(shù)據(jù),原樣輸出到磁盤文件中??梢怨?jié)省存儲空間和轉(zhuǎn)換時間,但1個字節(jié)并不對應(yīng)1個字符,不能直接輸出字符形式標(biāo)準(zhǔn)/非標(biāo)準(zhǔn)文件系統(tǒng)標(biāo)準(zhǔn)文件系統(tǒng):利用緩沖區(qū)將對磁盤文件進行操作的文件系統(tǒng)稱為緩沖(或高層)文件系統(tǒng),用戶使用方便從內(nèi)存向磁盤輸出數(shù)據(jù)時,必須首先輸出到緩沖區(qū)中。待緩沖區(qū)裝滿后,再一起輸出到磁盤文件中從磁盤文件向內(nèi)存讀入數(shù)據(jù)時,則正好相反:首先將一批數(shù)據(jù)讀入到緩沖區(qū)中,再從緩沖區(qū)中將數(shù)據(jù)逐個送到程序數(shù)據(jù)區(qū)非標(biāo)準(zhǔn)文件系統(tǒng):不使用緩沖區(qū)的磁盤文件系統(tǒng)稱為非緩沖(或低層)文件系統(tǒng)。編程難度較大,但程序的執(zhí)行效率高,占用內(nèi)存資源較少在C語言中,利用I/O庫函數(shù)完成文件操作程序數(shù)據(jù)區(qū)輸出文件緩沖區(qū)輸入輸入文件緩沖區(qū)輸出輸入磁盤內(nèi)存標(biāo)準(zhǔn)c采用緩沖文件系統(tǒng),其原理圖如下:輸出文件指針(指向文件的指針)緩沖文件系統(tǒng)為每個使用的文件在內(nèi)存中開辟一存儲區(qū)存放其相關(guān)信息,這些信息用一個結(jié)構(gòu)體變量保存,該結(jié)構(gòu)體類型的名字是FILE

程序通過FILE類型指針建立和文件的聯(lián)系,進行關(guān)于文件的一切操作定義形式:FILE*指針變量名;FILE*fp;例打開文件將文件信息從磁盤裝入計算機內(nèi)存(或新建一個文件),建立文件的各種有關(guān)信息,并使文件指針指向該文件,即建立文件類型指針與文件名之間的關(guān)聯(lián)filename:文件名(可以包含驅(qū)動器、路徑、文件名、擴展名)mode:打開方式FILE*:返回值如果成功打開,返回一個指向被打開文件的文件信息區(qū)的起始地址如果打開失敗,返回一個NULL指針函數(shù)原型:

打開文件的庫函數(shù)fopenFILE*fopen(char*filename,char*mode);文件打開方式參數(shù)

“r”(只讀)為輸入打開一個文本文件“w”(只寫)為輸出打開一個文本文件“a”(追加)向文本文件尾增加數(shù)據(jù)“rb”(只讀)為輸入打開一個二進制文件“wb”(只寫)為輸出打開一個二進制文件“ab”(追加)向二進制文件尾增加數(shù)據(jù)“r+”(讀寫)為讀/寫打開一個文本文件“w+”(讀寫)為讀/寫建立一個新的文本文件“a+”(讀寫)為讀/寫打開一個文本文件“rb+”(讀寫)為讀/寫打開一個二進制文件“wb+”(讀寫)為讀/寫建立一個新的二進制文件“ab+”(讀寫)為讀/寫打開一個二進制文件r:readw:writea:appendb:binary+:讀/寫文件操作方式的說明用”r”方式打開的文件只能用于向計算機輸入數(shù)據(jù),而且該文件應(yīng)該已經(jīng)存在用”w”方式打開的文件只能用于向該文件寫數(shù)據(jù),而不能用來向計算機輸入。

如果不存在該文件,則在打開時建立一個。

如果存在該文件,則新寫入的數(shù)據(jù)將覆蓋掉以前的數(shù)據(jù)如果希望向文件末尾添加新的數(shù)據(jù)(不希望刪除原有數(shù)據(jù)),則應(yīng)該用”a”方式打開用”r+”、”w+”、”a+”方式打開的文件可以用來輸入和輸出數(shù)據(jù)在程序開始運行時,系統(tǒng)自動打開以下標(biāo)準(zhǔn)文件,并自動地定義了對應(yīng)的FILE結(jié)構(gòu)指針變量【例1:】打開D盤根目錄下的myfile.c文件,驗證文件能否正確打開#include<stdio.h>voidmain(){FILE*fa;//定義文件指針變量if((fa=fopen(”d:\\myfile.c”,”r”))==NULL){printf(“\nCannotopenthefile!”);exit(0);//退出}…………}關(guān)閉文件

函數(shù)原型:將fp指向的緩沖區(qū)中的數(shù)據(jù)存放到外存儲器的文件中,然后釋放該緩沖區(qū),使文件指針變量不再指向與該文件對應(yīng)的FILE結(jié)構(gòu),從而斷開與文件的關(guān)聯(lián)操作正常返回0,否則返回EOF(是在stdio.h文件中定義的符號常量,值為-1)如果不關(guān)閉文件,可能會丟失數(shù)據(jù);并且一個C程序能同時打開的文件數(shù)有限,應(yīng)該養(yǎng)成在使用完文件后關(guān)閉文件的習(xí)慣fclose(文件指針);FILE*fp;…fclose(fp);例文件操作的一般步驟//定義文件指針變量FILE*fp;//打

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論