文件概述文件類型指針文件的打開與關(guān)閉文件的讀寫_第1頁(yè)
文件概述文件類型指針文件的打開與關(guān)閉文件的讀寫_第2頁(yè)
文件概述文件類型指針文件的打開與關(guān)閉文件的讀寫_第3頁(yè)
文件概述文件類型指針文件的打開與關(guān)閉文件的讀寫_第4頁(yè)
文件概述文件類型指針文件的打開與關(guān)閉文件的讀寫_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、文文 件件 概概 述述 文文 件件 類類 型型 指指 針針 文文 件件 的的 打打 開開 與與 關(guān)關(guān) 閉閉 文文 件件 的的 讀讀 寫寫文件文件:存儲(chǔ)在外部介質(zhì)上數(shù)據(jù)的集合。:存儲(chǔ)在外部介質(zhì)上數(shù)據(jù)的集合。 操作系統(tǒng)是以文件為單位對(duì)數(shù)據(jù)進(jìn)行管理的。操作系統(tǒng)是以文件為單位對(duì)數(shù)據(jù)進(jìn)行管理的。 概概 述述 1、 C語言把文件看作是一個(gè)字符(字節(jié))的序列,即語言把文件看作是一個(gè)字符(字節(jié))的序列,即由由 一個(gè)一個(gè)字符(字節(jié))的數(shù)據(jù)順序組成。一個(gè)一個(gè)字符(字節(jié))的數(shù)據(jù)順序組成。 2、在、在C語言中,沒有輸入輸出語句,對(duì)文件的讀寫都語言中,沒有輸入輸出語句,對(duì)文件的讀寫都是是 用庫(kù)函數(shù)來實(shí)現(xiàn)的。用庫(kù)函數(shù)來實(shí)

2、現(xiàn)的。 文文 件件 類類 型型 指指 針針 在緩沖文件系統(tǒng)中,每個(gè)被使用的文件都在內(nèi)存中開在緩沖文件系統(tǒng)中,每個(gè)被使用的文件都在內(nèi)存中開辟一個(gè)區(qū),用來存放文件的有關(guān)信息(如文件的名字、文辟一個(gè)區(qū),用來存放文件的有關(guān)信息(如文件的名字、文件狀態(tài)即文件當(dāng)前位置等)。這些信息是保存在一個(gè)結(jié)構(gòu)件狀態(tài)即文件當(dāng)前位置等)。這些信息是保存在一個(gè)結(jié)構(gòu)體類型的變量中的。該結(jié)構(gòu)體類型由系統(tǒng)定義為體類型的變量中的。該結(jié)構(gòu)體類型由系統(tǒng)定義為FILE.可以定義文件型指針變量,如:可以定義文件型指針變量,如:FILE * fp ;文文 件件 的的 打打 開開 (1 1) 文件的打開(文件的打開(fopenfopen函數(shù))

3、函數(shù))調(diào)用方式為:調(diào)用方式為: FILE FILE * *fp;fp; fp=fopen fp=fopen( (文件名,使用文件方式文件名,使用文件方式) );說明:說明: 1 1、用、用“r”r”方式打開的文件只能用于向計(jì)算機(jī)輸入而不能方式打開的文件只能用于向計(jì)算機(jī)輸入而不能 用作向該文件輸出數(shù)據(jù),而且該文件應(yīng)該已經(jīng)存在,用作向該文件輸出數(shù)據(jù),而且該文件應(yīng)該已經(jīng)存在, 不能打開一個(gè)并不存在的用于不能打開一個(gè)并不存在的用于“”方式的文件(即輸方式的文件(即輸 入文件)否則出錯(cuò)入文件)否則出錯(cuò)2 2、用、用“”方式打開的文件只能用于向該文件寫數(shù)據(jù),方式打開的文件只能用于向該文件寫數(shù)據(jù), 而不能用

4、來向計(jì)算機(jī)輸入。而不能用來向計(jì)算機(jī)輸入。3 3、如果希望向文件末尾添加新的數(shù)據(jù)(不希望刪除原、如果希望向文件末尾添加新的數(shù)據(jù)(不希望刪除原 有數(shù)據(jù)),則應(yīng)該用有數(shù)據(jù)),則應(yīng)該用“”方式打開。方式打開。4 4、用、用“”、“”、“”方式打開的文件可以用方式打開的文件可以用 來輸入和輸出數(shù)據(jù)。來輸入和輸出數(shù)據(jù)。5 5、如果不能實(shí)現(xiàn)、如果不能實(shí)現(xiàn)“打開打開”的任務(wù),的任務(wù),fopenfopen函數(shù)將會(huì)帶回一函數(shù)將會(huì)帶回一 個(gè)出錯(cuò)信息。個(gè)出錯(cuò)信息。文文 件件 的的 打打 開開 (2 2)文文 件件 的的 打打 開開 (3 3)6 6、用以上方式可以打開文本文件或二進(jìn)制文件用同一種、用以上方式可以打開文

5、本文件或二進(jìn)制文件用同一種 緩沖文件系統(tǒng)來處理文本文件和二進(jìn)制文件。緩沖文件系統(tǒng)來處理文本文件和二進(jìn)制文件。7 7、在用文本文件,向計(jì)算機(jī)輸入時(shí),將回車換行符轉(zhuǎn)換、在用文本文件,向計(jì)算機(jī)輸入時(shí),將回車換行符轉(zhuǎn)換 為一個(gè)換行符,在輸出時(shí)把換行符轉(zhuǎn)換成為回車和換為一個(gè)換行符,在輸出時(shí)把換行符轉(zhuǎn)換成為回車和換 行兩個(gè)字符。行兩個(gè)字符。8 8、在程序開始運(yùn)行時(shí),系統(tǒng)自動(dòng)打開三個(gè)標(biāo)準(zhǔn)文件:、在程序開始運(yùn)行時(shí),系統(tǒng)自動(dòng)打開三個(gè)標(biāo)準(zhǔn)文件: 標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出、標(biāo)準(zhǔn)出錯(cuò)輸出標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出、標(biāo)準(zhǔn)出錯(cuò)輸出 文文 件件 的的 關(guān)關(guān) 閉閉 (1 1)文件的關(guān)閉(文件的關(guān)閉(fclosefclose函數(shù))函數(shù))關(guān)閉

6、:關(guān)閉: 是使文件指針變量不指向該文件,也就是文件指針變量是使文件指針變量不指向該文件,也就是文件指針變量與文件與文件“脫鉤脫鉤”,此后不能在通過該指針對(duì)其相連的文件進(jìn)行,此后不能在通過該指針對(duì)其相連的文件進(jìn)行讀寫操作,除非再次打開,使該指針變量重新指向該文件。讀寫操作,除非再次打開,使該指針變量重新指向該文件。在使用完一個(gè)文件后應(yīng)該關(guān)閉它,以防止它再被誤用。在使用完一個(gè)文件后應(yīng)該關(guān)閉它,以防止它再被誤用。fclosefclose函數(shù)調(diào)用的一般形式為:函數(shù)調(diào)用的一般形式為: fclosefclose( (文件指針文件指針) )例如:例如: fclose(fpfclose(fp); ); / /

7、* *前面我們?cè)汛蜷_文件時(shí)所帶回的指針賦給了前面我們?cè)汛蜷_文件時(shí)所帶回的指針賦給了fpfp,今通過,今通過fpfp把該文件關(guān)閉,此時(shí),把該文件關(guān)閉,此時(shí),fpfp不再指向該文件不再指向該文件* */ /文文 件件 的的 關(guān)關(guān) 閉閉 (2 2)fclose函數(shù)也帶回一個(gè)值:當(dāng)順利地執(zhí)行了關(guān)閉操作,則返回值為0 ; 否則, 返回EOF(-1) 在向文件寫數(shù)據(jù)時(shí),是先將數(shù)據(jù)輸?shù)骄彌_區(qū),待緩沖區(qū)充滿后才正式輸出給文件。如果,當(dāng)數(shù)據(jù)未充滿緩沖區(qū)而程序結(jié)束運(yùn)行,就會(huì)將緩沖區(qū)中的數(shù)據(jù)丟失。用flose函數(shù)關(guān)閉文件,就可以避免這個(gè)問題,它先把緩沖區(qū)中的數(shù)據(jù)輸出到磁盤文件,然后才釋放文件指針變量。文文 件件

8、 的的 讀讀 寫寫文件打開之后,可以對(duì)它進(jìn)行讀寫了,常用的讀寫函數(shù)如下:fputcfgetcfreadfwritefprintffscanffputcfputc函函 數(shù)數(shù) 1、fputc函數(shù)函數(shù) 把一個(gè)字符寫到磁盤文件上去把一個(gè)字符寫到磁盤文件上去,其一般形式為:,其一般形式為: fputc(ch , fp);ch可以是一個(gè)字符變量,也可以是一個(gè)字符常量,可以是一個(gè)字符變量,也可以是一個(gè)字符常量,fp是是文件指針變量,文件指針變量,fputc(ch , fp) 函數(shù)的作用是將字符輸函數(shù)的作用是將字符輸出到出到fp所指向的文件中去。所指向的文件中去。 fp也帶回一個(gè)值:也帶回一個(gè)值: 如果輸出成

9、功則返回值就是輸出的字符;如果輸出如果輸出成功則返回值就是輸出的字符;如果輸出失敗,則返回一個(gè)失敗,則返回一個(gè)EOF(-1)。 EOF是在是在stdio.h文件中文件中定義的符號(hào)常量,值為定義的符號(hào)常量,值為-1。fgetcfgetc函函 數(shù)數(shù)2、fgetc函數(shù)函數(shù) 從指定的文件讀入一個(gè)字符從指定的文件讀入一個(gè)字符,該文件必須是以讀或,該文件必須是以讀或 讀寫方式打開的。其調(diào)用的一般形式為:讀寫方式打開的。其調(diào)用的一般形式為: ch=fgetc(fp); fp為文件型指針變量,為文件型指針變量,ch 為字符變量。為字符變量。fgetc函數(shù)帶回函數(shù)帶回一個(gè)字符,賦給一個(gè)字符,賦給ch ;如果在執(zhí)

10、行;如果在執(zhí)行fgetc函數(shù)讀字符時(shí)遇到函數(shù)讀字符時(shí)遇到文件結(jié)束符,函數(shù)返回一個(gè)文件結(jié)束標(biāo)志文件結(jié)束符,函數(shù)返回一個(gè)文件結(jié)束標(biāo)志EOF(-1);); 如果想從一個(gè)磁盤文件順序讀入字符并在屏幕上顯如果想從一個(gè)磁盤文件順序讀入字符并在屏幕上顯示出來,可以示出來,可以: ch=fgetc( fp ) ; while( ch!=EOF ) putchar( ch ) ; ch=fgetc( fp ) ; 例例 題題 程程 序序例13.1 從鍵盤輸入一些字符,逐個(gè)把它們送到磁盤上去,直到輸入一個(gè)“#”為止例13.2 將一個(gè)磁盤文件中的信息復(fù)制到另一個(gè)磁盤文件中fread fread 和和 fwritef

11、write 函函 數(shù)數(shù)fread函數(shù) 用來讀取一個(gè)數(shù)據(jù)塊,F(xiàn)write函數(shù) 用來寫入一個(gè)數(shù)據(jù)塊,它們的一般調(diào)用形式為:fread(buffer , size , count , fp)fwrite(buffer , size , count ,fp)其中,buffer是一個(gè)指針, 對(duì)fread來說,它是讀入數(shù)據(jù)的存放地址;對(duì)fwrite來說,它是要輸出數(shù)據(jù)的地址(以上指的是起始地址)size:要讀寫的字節(jié)數(shù)count:要進(jìn)行讀寫多少個(gè)size 字節(jié)的數(shù)據(jù)項(xiàng)fp: 文件類型指針例例 題題 程程 序序例13.3 從鍵盤輸入4個(gè)學(xué)生的有關(guān)數(shù)據(jù), 然后把它們轉(zhuǎn)存到磁盤文件上去fprintffprint

12、f函函 數(shù)數(shù) 和和 fscanf fscanf 函函 數(shù)數(shù)與與printfprintf函數(shù)、函數(shù)、scanfscanf函數(shù)作用相仿,都是格式化讀寫函數(shù);函數(shù)作用相仿,都是格式化讀寫函數(shù);不同之處:不同之處:fprintffprintf和和fscanffscanf函數(shù)的讀寫對(duì)象不是終端而是函數(shù)的讀寫對(duì)象不是終端而是 磁盤文件。磁盤文件。一般調(diào)用方式為:一般調(diào)用方式為:fprintf(文件指針,格式字符串,輸出列標(biāo)文件指針,格式字符串,輸出列標(biāo)); fscanf(文件指針,格式字符串,輸入列表文件指針,格式字符串,輸入列表);說明:說明:用用fprintffprintf和和fscanffscanf函數(shù)對(duì)磁盤文件讀寫,使用方便,容函數(shù)對(duì)磁盤文件讀寫,使用方便,容易理解,但由于在輸入時(shí)要易理解,但由于在輸入時(shí)要ASCIIA

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論