《C語言程序設(shè)計(jì)》課件chapter7 文件_第1頁
《C語言程序設(shè)計(jì)》課件chapter7 文件_第2頁
《C語言程序設(shè)計(jì)》課件chapter7 文件_第3頁
《C語言程序設(shè)計(jì)》課件chapter7 文件_第4頁
《C語言程序設(shè)計(jì)》課件chapter7 文件_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第7章文件

用文件可以將輸入或輸出數(shù)據(jù)有組織的長期保存在磁盤中。數(shù)據(jù)可以做到一次輸入,反復(fù)使用,提高輸入輸出效率。“文件”是指一組相關(guān)數(shù)據(jù)的集合。每個(gè)文件均有一個(gè)名稱,即文件名,可以唯一標(biāo)識(shí)一個(gè)文件。例如:源程序文件、目標(biāo)文件、可執(zhí)行文件、庫文件(頭文件)等。按文件存儲(chǔ)數(shù)據(jù)的形式

ASCII文件(或稱文本文件)

ASCII碼文件中每個(gè)字節(jié)存放一個(gè)ASCII代碼,代表一個(gè)字符,此種存儲(chǔ)形式便于輸出顯示,在DOS操作系統(tǒng)下可以直接閱讀。

二進(jìn)制文件

二進(jìn)制文件中的數(shù)據(jù)是按照在內(nèi)存中的存儲(chǔ)格式原樣存放的,此種存儲(chǔ)形式節(jié)省存儲(chǔ)單元。二進(jìn)制文件在DOS操作系統(tǒng)下不能直接閱讀。文件的分類文本文件二進(jìn)制文件ASCII文件例:整數(shù)1949占用4個(gè)字節(jié)占用2個(gè)字節(jié)00110001001110010011010000111001'1''9''4''9'0000011110011101文件的分類文件的操作流程1、建立/打開文件2、從文件中讀數(shù)據(jù)或向文件中寫數(shù)據(jù)3、關(guān)閉文件緩沖文件系統(tǒng)寫操作:從用戶角度看,文件寫操作的是將某個(gè)變量或數(shù)組的內(nèi)容輸出到文件中;實(shí)際上,進(jìn)行文件的寫操作時(shí),數(shù)據(jù)從內(nèi)存中的程序數(shù)據(jù)區(qū),先放到文件緩沖區(qū)暫存,當(dāng)緩沖區(qū)放滿后,數(shù)據(jù)才被整塊輸出到外存儲(chǔ)器上的文件中。文件緩沖區(qū)讀操作:在進(jìn)行文件的操作時(shí),先將外存文件中的一塊數(shù)據(jù)一次讀到文件緩沖區(qū)中;然后再從緩沖區(qū)中取出程序所需的數(shù)據(jù),送入程序數(shù)據(jù)區(qū)中的指定變量或數(shù)組元素所對(duì)應(yīng)的內(nèi)存單元中。文件緩沖區(qū)系統(tǒng)在內(nèi)存中為每一個(gè)正在使用的文件開辟一個(gè)文件信息區(qū),用來存放文件的相關(guān)信息(文件名、文件狀態(tài)、文件當(dāng)前讀寫位置、緩沖區(qū)狀態(tài)等),這些信息是保存在一個(gè)結(jié)構(gòu)體變量中。通過它才能順利進(jìn)行文件操作。文件指針typedefstruct{shortlevel;//緩沖區(qū)“滿”或“空”的程度unsignedflags;//文件狀態(tài)標(biāo)志charfd;//文件描述符unsignedcharhold;//如無緩沖區(qū)不讀取字符shortbsize;//緩沖區(qū)的大小unsignedchar*baffer;//數(shù)據(jù)緩沖區(qū)的讀寫位置unsignedchar*curp;//文件讀寫位置指針unsignedistemp;//臨時(shí)文件,指示器shorttoken;//用于有效性檢查}FILE;在C語言中對(duì)每個(gè)正在使用的文件,用一個(gè)指針變量指向?qū)?yīng)的文件信息區(qū),這個(gè)指針變量稱為文件指針。

定義文件指針的一般形式為:

FILE*指針變量標(biāo)識(shí)符;文件的三種基本使用方式只讀方式:為讀(輸入)文本文件打開文件。若文件不存在,返回NULL。只寫方式:為寫(輸出)文本文件打開文件。若文件不存在,則建立一個(gè)新文件;若文件已存在,則清空文件。追加方式:為寫(輸出)文本文件打開文件。若文件已存在,則保持原來文件的內(nèi)容,將新的數(shù)據(jù)增加到原來數(shù)據(jù)的后面;若文件不存在,則建立一個(gè)新文件。文件類型只讀方式只寫方式追加方式讀寫模式ASCII文件rwar+w+a+二進(jìn)制文件rbwbabrb+wb+ab+文件的打開與關(guān)閉文件的打開函數(shù)(fopen)FILE*fp;fp=fopen(文件名,使用文件方式);函數(shù)功能:按指定的文件使用方式打開指定的文件。若文件打開成功,為該文件分配一個(gè)文件緩沖區(qū)和一個(gè)FILE類型變量,返回一個(gè)FILE類型指針;若文件打開失敗,返回NULL。文件關(guān)閉函數(shù)fclose()

文件的打開與關(guān)閉

FILE*fp;fclose(fp);

fp:已經(jīng)打開的文件指針。函數(shù)功能:關(guān)閉fp指定的文件,釋放該文件的緩沖區(qū)、FILE類型變量及文件指針。若文件關(guān)閉成功,則返回0;若文件關(guān)閉失敗,則返回非0值。單字符讀寫函數(shù)寫函數(shù):

intfputc(charch,FILE*fp);

功能:將字符ch寫入到文件指針fp指向文件的位置。

成功時(shí)返回字符本身,否則返回EOF。讀函數(shù):

intfgetc(FILE*fp);

功能:從文件指針fp指向文件的位置讀取一個(gè)字符,

若成功則返回該字符,否則返回EOF。讀取完成后指針自動(dòng)后移指向下一個(gè)字符。字符串讀寫函數(shù)寫函數(shù):

intfputs(char*str,FILE*fp);

功能:將字符串str寫入到文fp指向文件的位置。

成功時(shí)返回非0值,否則返回EOF。讀函數(shù):

char*fgets(char*str,intn,FILE*fp);

功能:從fp指向文件的位置n個(gè)字符放入字符串str中,

若成功則返回該字符串地址,否則返回NULL。格式化讀寫函數(shù)

FILE*fp;

fprintf(fp,格式控制串,輸出項(xiàng)參數(shù)表

);

格式控制串和輸出項(xiàng)參數(shù)表的規(guī)定和使用方法與printf函數(shù)相同。函數(shù)功能:將輸出項(xiàng)按指定格式寫入fp所指向的文件中。若輸出操作成功,返回寫入的字節(jié)數(shù);若輸出操作失敗,則返回EOF。與標(biāo)準(zhǔn)文件的格式輸入輸出函數(shù)scanf和printf相對(duì)應(yīng),文本文件也有格式輸入輸出函數(shù)fscanf和fprintf。它們的功能和格式基本相同,不同之處在于scanf和printf的讀寫對(duì)象是終端(鍵盤和顯示器),fscanf和fprintf的讀寫對(duì)象是磁盤文件。

FILE*fp;

fscanf(fp,格式控制串,地址表);格式控制串和地址表的規(guī)定和使用方法與scanf函數(shù)相同。函數(shù)功能:按格式控制串所描述的格式,從fp所指向的文件中

讀取數(shù)據(jù),送到指定的內(nèi)存地址單元中。若輸入操作成功,返回實(shí)際讀出的數(shù)據(jù)項(xiàng)個(gè)數(shù),不包括數(shù)據(jù)分隔符。若沒有讀數(shù)據(jù)項(xiàng),則返回0。若文件結(jié)束或調(diào)用失敗,則返回EOF。格式化讀寫函數(shù)

fwrite(p,size,n,fp);

p:某類型指針;

size:某類型數(shù)據(jù)存儲(chǔ)空間的字節(jié)數(shù);

n:此次寫入文件的數(shù)據(jù)項(xiàng)數(shù);

fp:文件指針變量。數(shù)據(jù)塊讀寫函數(shù)運(yùn)用數(shù)據(jù)塊輸入輸出函數(shù)可建立整型、實(shí)型、結(jié)構(gòu)體類型等各種類型的二進(jìn)制文件。函數(shù)功能:將p指向的存儲(chǔ)區(qū)中n個(gè)數(shù)據(jù)項(xiàng)寫入fp所指向的文件。若輸出操作成功,返回寫入的數(shù)據(jù)項(xiàng)數(shù);若輸出操作失敗,則返回0。數(shù)據(jù)塊讀寫函數(shù)

fread(p,size,n,

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論