機(jī)電C第9章 .ppt_第1頁(yè)
機(jī)電C第9章 .ppt_第2頁(yè)
機(jī)電C第9章 .ppt_第3頁(yè)
機(jī)電C第9章 .ppt_第4頁(yè)
機(jī)電C第9章 .ppt_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第 9 章 文件,概 述,C語(yǔ)言本身沒(méi)有為文件提供一種基本數(shù)據(jù)類(lèi)型,而是提供了一種構(gòu)造類(lèi)型FILE。這種類(lèi)型是在標(biāo)準(zhǔn)輸入輸出庫(kù)文件stdio.h中定義的,使用起來(lái)非常方便和有效??傮w上說(shuō),C語(yǔ)言通過(guò)定義一套標(biāo)準(zhǔn)輸入輸出庫(kù)函數(shù),來(lái)完成對(duì)文件的操作。 本章介紹C文件的概念,文件指針及定義形式,文件打開(kāi)、關(guān)閉方式,文件讀寫(xiě)的含義及簡(jiǎn)單操作。更多的內(nèi)容可參閱相關(guān)書(shū)籍。,1. 文件指針的定義。 2. 文件打開(kāi)和關(guān)閉的方法。 3. 文件讀寫(xiě)的簡(jiǎn)單操作。,考核內(nèi)容,9.1 C語(yǔ)言的文件概念,文件是程序設(shè)計(jì)中的重要概念。一般來(lái)說(shuō),文件是邏輯上具有完整意義的信息的集合。例如,程序文件是程序代碼的集合,數(shù)據(jù)文件是

2、處理數(shù)據(jù)的集合。文件的物理存儲(chǔ)位置是外部存儲(chǔ)設(shè)備,例如硬盤(pán)、軟盤(pán)、磁帶、屏幕等。對(duì)文件的處理過(guò)程就是對(duì)文件的讀寫(xiě)過(guò)程或輸入輸出過(guò)程。,C語(yǔ)言對(duì)文件的處理是通過(guò)標(biāo)準(zhǔn)函數(shù)庫(kù)中的輸入輸出函數(shù)來(lái)實(shí)現(xiàn)的。在C語(yǔ)言中,所有的外部設(shè)備均被視為文件對(duì)待,這種文件稱(chēng)為設(shè)備文件。在表示外部設(shè)備的設(shè)備文件中,有三個(gè)特殊文件,它們是由系統(tǒng)分配和控制的,稱(chēng)為標(biāo)準(zhǔn)設(shè)備文件,它們是: 1. 標(biāo)準(zhǔn)輸入文件:系統(tǒng)分配為鍵盤(pán)。 2. 標(biāo)準(zhǔn)輸出文件:系統(tǒng)分配為顯示器。 3. 標(biāo)準(zhǔn)錯(cuò)誤輸出文件:系統(tǒng)分配為顯示器。,9.1 C語(yǔ)言的文件概念,C語(yǔ)言把文件看作是字符(或字節(jié))序列,即文件是由一個(gè)個(gè)字符(或字節(jié))數(shù)據(jù)順序組成。如果文件是由

3、一個(gè)個(gè)字符數(shù)據(jù)組成,則稱(chēng)之為文本文件;如果是由一個(gè)個(gè)字節(jié)數(shù)據(jù)組成,則稱(chēng)之為二進(jìn)制文件。所以C語(yǔ)言文件是一個(gè)個(gè)字符流或二進(jìn)制流(這里的流可理解為序列之意),也就是說(shuō)它是由一串字符(或字節(jié))所組成,而不是由記錄所組成。因此,C語(yǔ)言文件也叫流式文件。流式文件允許對(duì)一個(gè)字符(或字節(jié))進(jìn)行存取,這在很大程度上增加了對(duì)數(shù)據(jù)處理的靈活性。,9.1 C語(yǔ)言的文件概念,在C語(yǔ)言的過(guò)去版本中,有兩種對(duì)文件的處理方法,一種叫“緩沖文件系統(tǒng)”,另一種叫“非緩沖文件系統(tǒng)”。“緩沖文件系統(tǒng)”是指系統(tǒng)為這類(lèi)文件自動(dòng)在內(nèi)存區(qū)開(kāi)辟一個(gè)確定大小的緩沖區(qū),使輸入輸出都先通過(guò)緩沖區(qū)過(guò)渡,以提高效率。“非緩沖文件系統(tǒng)”是系統(tǒng)不自動(dòng)開(kāi)辟

4、確定大小的緩沖區(qū),而是由程序?yàn)槊總€(gè)文件設(shè)定一個(gè)緩沖區(qū),但目前的ANSI C 不提倡使用“非緩沖文件系統(tǒng)”。,9.1 C語(yǔ)言的文件概念,9.2 C語(yǔ)言文件類(lèi)型指針,文件類(lèi)型指針是“緩沖文件系統(tǒng)”的一個(gè)重要概念,實(shí)際上是一個(gè)指向結(jié)構(gòu)體類(lèi)型的指針變量。C語(yǔ)言程序可同時(shí)處理多個(gè)文件,為了對(duì)每個(gè)文件進(jìn)行有效的管理,就需要為其開(kāi)辟一個(gè)“文件信息描述區(qū)”,以記錄文件的當(dāng)前狀態(tài)(例如文件名、文件狀態(tài)、當(dāng)前存取的字符位置等)。該信息描述區(qū)是用一個(gè)結(jié)構(gòu)體變量來(lái)表達(dá)的,該結(jié)構(gòu)體變量的類(lèi)型由系統(tǒng)定義,并取名為FILE。通常它被存放在 頭文件中。,對(duì)于每一個(gè)要操作的文件,都必須定義一個(gè)指針變量,并使它指向該文件的結(jié)構(gòu)體

5、變量,該指針叫文件類(lèi)型指針,簡(jiǎn)稱(chēng)文件指針。一旦為某個(gè)文件定義了文件指針后,就可通過(guò)該文件指針找到被操作文件的描述信息,進(jìn)而對(duì)其進(jìn)行操作。定義文件類(lèi)型指針的一般形式為: FILE *文件指針變量名 例如: FILE *fp1,*fp2; fp1和fp2被定義為指向文件類(lèi)型的指針變量,即文件指針。,9.2 C語(yǔ)言文件類(lèi)型指針,9.3 文件的打開(kāi)與關(guān)閉,9.3.1 文件打開(kāi),在C語(yǔ)言中,打開(kāi)文件用函數(shù)“fopen”。 “fopen”函數(shù)的調(diào)用方式通常為: FILE *fp; fp= fopen(“文件名”,“文件使用方式”); 例如有下列語(yǔ)句: FILE *fp1; fp1=fopen(“c:fil

6、e1.dat”,“r”); 該語(yǔ)句表示以只讀方式打開(kāi)C盤(pán)根目錄上的文件“file1.dat”。,下表是C語(yǔ)言文件的使用方式、含義及功能,9.3.1 文件打開(kāi),注意: 1.用“r”或“rb”方式只能打開(kāi)一個(gè)已存在的文件,且只能讀該文件的內(nèi)容,不能改寫(xiě)該文件。 2.用“w”或“wb” 或“w+” 或“wb+”方式只能用于新建一個(gè)文件,若該文件已經(jīng)存在,則覆蓋該文件。 3.若正確執(zhí)行fopen函數(shù),則函數(shù)返回一個(gè)非空指針值,否則返回空指針NULL。因此用fopen函數(shù)打開(kāi)一個(gè)文件時(shí),一般情況下都要對(duì)函數(shù)返回值進(jìn)行檢查,以判斷文件是否正常打開(kāi)。,9.3.1 文件打開(kāi),在程序中,文件處理完畢后必須要關(guān)閉

7、,否則可能造成文件數(shù)據(jù)丟失等問(wèn)題。在C語(yǔ)言中,關(guān)閉文件要用到文件關(guān)閉函數(shù)“fclose”,該函數(shù)的調(diào)用方式通常為: fclose(文件指針); 例如:fclose(fp1);就是關(guān)閉文件指針fp1所指向的文件,亦即讓fp1解除與所指向的文件的聯(lián)系,并在解除這種聯(lián)系之前進(jìn)行文件的善后處理(如把緩沖區(qū)數(shù)據(jù)寫(xiě)入文件等)。,9.3.2 文件關(guān)閉,9.4 文件的讀寫(xiě),9.4.1 文件讀寫(xiě)的含義,1. 文件的讀操作 就是將一個(gè)已經(jīng)打開(kāi)的文件的內(nèi)容讀取出來(lái)。通常是在文件的當(dāng)前位置處讀出一部分?jǐn)?shù)據(jù),并將其賦給一個(gè)對(duì)應(yīng)的變量。文件剛打開(kāi)時(shí),其位置指針指向文件的開(kāi)頭。當(dāng)進(jìn)行讀操作時(shí),總是從文件位置指針?biāo)肝恢瞄_(kāi)始

8、,去讀后面的數(shù)據(jù),然后文件位置指針移到尚未讀取的位置之前,以備下一次的讀寫(xiě)操作。讀操作只會(huì)影響文件的位置指針,而不會(huì)修改文件的內(nèi)容。,9.4.1 文件讀寫(xiě)的含義,2.文件的寫(xiě)操作 就是將一些數(shù)據(jù)寫(xiě)入(有時(shí)也稱(chēng)存入或輸出)到某個(gè)文件中。該文件可以是一個(gè)已經(jīng)存在的文件,也可以是一個(gè)新建的文件。每次寫(xiě)操作都是將某些數(shù)據(jù)從文件的位置指針處開(kāi)始寫(xiě)入,寫(xiě)操作完畢后,文件位置指針自動(dòng)移到下一個(gè)寫(xiě)入位置。寫(xiě)操作不僅會(huì)影響文件的位置指針,還會(huì)修改文件的內(nèi)容。,9.4.1 文件讀寫(xiě)的含義,下表是常見(jiàn)的讀寫(xiě)函數(shù),9.4.1 文件讀寫(xiě)的含義 注意:,1.原則上,fputc和fgetc、fputs和fgets、fwri

9、te 和fread、 fprintf 和fscanf應(yīng)配對(duì)使用。此處“配對(duì)”意思是如果用了fgetc從一個(gè)文件中讀取了單個(gè)數(shù)據(jù),則當(dāng)向其寫(xiě)入單個(gè)數(shù)據(jù)時(shí),應(yīng)該用fputc,而不用其它寫(xiě)函數(shù)。其余幾對(duì)函數(shù)以此類(lèi)推。 2.調(diào)用fputs或fprintf若成功,則返回非0值,否則返回0值。,9.4.1 文件讀寫(xiě)的含義 注意:,3.fgetc函數(shù)用于從文本文件中讀取單個(gè)字符,該函數(shù)返回讀取的字符。若讀取失敗,則返回EOF(即-1)。fputc函數(shù)若調(diào)用成功,返回要寫(xiě)入的字符,否則返回EOF。 4、若文件以二進(jìn)制形式打開(kāi),用fread和fwrite函數(shù)可以讀寫(xiě)任何類(lèi)型的數(shù)據(jù)。這兩個(gè)函數(shù)若調(diào)用成功,則返回?cái)?shù)

10、據(jù)的“個(gè)數(shù)”值。 個(gè)數(shù)=讀寫(xiě)數(shù)據(jù)的長(zhǎng)度每個(gè)數(shù)據(jù)占據(jù)的字節(jié)數(shù),9.4.2 文件讀寫(xiě)操作例子,【例9-1】 把從鍵盤(pán)輸入的文本按原樣寫(xiě)入到名為example1.dat的磁盤(pán)文件中,用字符“#”作為輸入結(jié)束標(biāo)志。,#include main() FILE *fp1; char ch; if(fp1=fopen(“example1.dat”,“w”)=NULL) printf(“Cant open the file!n”); exit(1); printf(“請(qǐng)輸入字符:n”); ch=getchar(); while(ch!=#) fputc(ch,fp1); ch=getchar(); fclos

11、e(fp1); ,【例9-2】 將上例中example1.dat中的內(nèi)容,原樣輸出到屏幕上。,#include main() FILE *fp1; char ch; if(fp1=fopen(“example1.dat”,“r”)=NULL) printf(“Cant open the file!n”); exit(1); ch=fgetc(fp1); while(ch!=EOF) putchar(ch); ch=fgetc(fp1); fclose(fp1); ,本章小結(jié),1.C語(yǔ)言中文件被看作字符(字節(jié))序列,稱(chēng)為流式文件,C文件可分為文本文件和二進(jìn)制文件兩類(lèi)。C語(yǔ)言本身并沒(méi)有為文件提供一

12、種基本數(shù)據(jù)類(lèi)型,而是提供了一種構(gòu)造類(lèi)型FILE。在C語(yǔ)言的過(guò)去版本中,有兩種對(duì)文件的處理方法,一種叫“緩沖文件系統(tǒng)”,另一種叫“非緩沖文件系統(tǒng)”,但目前的ANSI C 不提倡使用“非緩沖文件系統(tǒng)”。,2.在C語(yǔ)言中,對(duì)于每一個(gè)要操作的文件,都必須為其定義一個(gè)文件指針,并讓這個(gè)文件指針指向要操作的文件。文件指針的定義形式為: FILE *文件指針變量名 3.C語(yǔ)言對(duì)文件的操作都是由庫(kù)函數(shù)實(shí)現(xiàn)的,因此,在調(diào)用這些函數(shù)時(shí),應(yīng)在程序開(kāi)頭包含文件stdio.h。而且要使用文件時(shí),必須將其打開(kāi);使用完后,必須將其關(guān)閉。,本章小結(jié),4.文件的讀操作,就是將一個(gè)已經(jīng)打開(kāi)的文件的內(nèi)容讀取出來(lái)(有時(shí)也稱(chēng)輸入或取出)。通常是在文件的當(dāng)前位置處讀出一部分?jǐn)?shù)據(jù),并將其賦給一個(gè)對(duì)應(yīng)的變量。讀操作只會(huì)影響文件的位置

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論