C語言程序設(shè)計第10章-文件課件_第1頁
C語言程序設(shè)計第10章-文件課件_第2頁
C語言程序設(shè)計第10章-文件課件_第3頁
C語言程序設(shè)計第10章-文件課件_第4頁
C語言程序設(shè)計第10章-文件課件_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、01020310.1 文件概述10.2 文件操作10.3 文件的定位第十章 文件040510.4 編譯預(yù)處理10.5 知識點強化與應(yīng)用10.6 本章小結(jié)06【學(xué)習(xí)要點】1.文件的概念2.文件的打開、數(shù)據(jù)寫入和讀取3.簡單宏定義和帶參宏定義的使用4.條件編譯本章主要介紹文件的常用操作和條件編譯的使用。為了完成對之前錄入的學(xué)生信息長期存放,現(xiàn)需要將其存放在E盤的student.txt文件中,并能方便的將該文件中需要的信息讀出,并進(jìn)行相關(guān)操作。【導(dǎo)入案例:數(shù)據(jù)的長期存儲及讀取】在學(xué)生信息管理系統(tǒng)中,每次運行系統(tǒng)所錄入的數(shù)據(jù)和運算得到的結(jié)果都只存儲在內(nèi)存中,下次再次運行系統(tǒng)時,之前的數(shù)據(jù)都會消失,不符

2、合系統(tǒng)的真實場景,在實際應(yīng)用過程中,顯然會帶來許多不便。【解決方案】將之前存放在內(nèi)存中的數(shù)據(jù)存儲到磁盤上對應(yīng)的文件中去。分析10.1 文件概述10.1.1 文件的概念10.1.2 文件的分類10.1.1文件的概念所謂“文件”一般指:存儲在外部介質(zhì)(如磁盤)上數(shù)據(jù)的集合。將數(shù)據(jù)存放在文件中,是為了對數(shù)據(jù)進(jìn)行長期的保存,彌補了內(nèi)存不能對數(shù)據(jù)進(jìn)行長期存儲的缺陷。 對數(shù)據(jù)進(jìn)行存盤前,數(shù)據(jù)是存放在內(nèi)存中,對文件存盤后,數(shù)據(jù)就存放到磁盤上,即:內(nèi)存-磁盤(save操作) 當(dāng)需要對磁盤中的數(shù)據(jù)進(jìn)行處理時,先需把數(shù)據(jù)導(dǎo)入到內(nèi)存,然后對內(nèi)存中的數(shù)據(jù)進(jìn)行操作,即:磁盤-內(nèi)存(load操作)。10.1.2 文件的分

3、類文件可分為:ASCII碼文件和二進(jìn)制文件兩種。ASCII文件也稱為文本文件,這種文件在磁盤中存放時每個字符對應(yīng)一個字節(jié),C語言中的所有的源程序文件(擴展名為.c)就是ASCII文件。二進(jìn)制文件是按二進(jìn)制的編碼方式來存放文件的,C語言中的目標(biāo)文件(擴展名為.obj)和可執(zhí)行文件(擴展名為.exe)都是二進(jìn)制文件。10.2 文件操作10.2.1 文件類型指針10.2.2 文件的打開操作10.2.3 文件的關(guān)閉操作10.2.4 文件的讀寫操作10.2.1文件類型指針用一個指針變量指向一個文件,這個指針稱為文件指針。通過文件指針就可對它所指的文件進(jìn)行各種操作。定義說明文件指針的一般形式為: FILE

4、 *指針變量標(biāo)識符;10.2.2 文件的打開打開文件,實際上是建立文件的各種有關(guān)信息,并使文件指針指向該文件,以便進(jìn)行其它操作,一般是調(diào)用fopen函數(shù)。打開文件的一般方法為:文件指針名 = fopen(文件名,使用文件方式);其中:“文件指針名”必須是被說明為FILE 類型的指針變量;“文件名”是被打開文件的文件名;(或文件的詳細(xì)路徑)“使用文件方式”是指文件的類型和操作要求。例如:FILE *fp1,fp2;fp1=(“t1.txt,r);fp2=(c:hzk16,rb)10.2.2 文件的打開(續(xù))文件的使用方式主要如下表所示:使用方式 意義使用方式意義 rt只讀打開一個文本文件 rt+

5、讀寫打開一個文本文件 wt只寫打開或建立一個文本文件wt+ 讀寫打開或建立一個文本文件 at追加打開一個文本文件at+ 讀寫打開一個文本文件,或在文件末追加數(shù)據(jù) rb只讀打開一個二進(jìn)制文件rb+ 讀寫打開一個二進(jìn)制文件 wb只寫打開或建立一個二進(jìn)制文件wb+ 讀寫打開或建立一個二進(jìn)制文件 ab追加打開一個二進(jìn)制文件ab+ 讀寫打開一個二進(jìn)制文件,或在文件末追加數(shù)據(jù)10.2.3 文件的關(guān)閉文件一旦使用完畢,應(yīng)用關(guān)閉文件函數(shù)把文件關(guān)閉,以避免文件的數(shù)據(jù)丟失等錯誤,一般是調(diào)用fclose函數(shù)來關(guān)閉文件。關(guān)閉的方法為:fclose(文件指針);如: fclose(fp1); fclose(fp2);1

6、0.2.4 文件的讀寫1)單個字符的讀寫 讀文件:ch=fgetc(fp);/從fp所指向的文件中讀取1個的字符賦值給字符變量ch; 寫文件:fputc(ch,fp);/將字符ch變量的值寫入到fp所指向的文件。2)字符串讀寫和fputs 讀文件:fgets(字符數(shù)組名,n,fp);/其中的n是一個正整數(shù)。表示從fp所指向的文件中讀取不超過 n-1個的字符,最后一個字符后加上串結(jié)束標(biāo)志0。然后存放到字符數(shù)組中去。在讀入的 寫文件:fputs(字符數(shù)組名,fp);/將字符數(shù)組中的內(nèi)容寫入到fp所指向的文件。10.2.4 文件的讀寫(續(xù))3)數(shù)據(jù)塊讀寫,一般用于整條記錄的讀寫 讀:fread(bu

7、ffer,size,count,fp); 寫:fwrite(buffer,size,count,fp);其中: buffer 表示內(nèi)存中的一塊地址; size表示要讀寫的記錄的字節(jié)數(shù); count表示一次性要讀寫的記錄的條數(shù); fp是指向待讀寫的文件的文件指針;10.2.4 文件的讀寫(續(xù))4)格式化讀寫函數(shù) 讀:fscanf(文件指針,格式字符串,輸入表列); 寫:fprintf(文件指針,格式字符串,輸出表列);如:fscanf(fp,“%d%f”,&m,&x);/從fp指針?biāo)赶虻奈募漠?dāng)前位置以%d和%f的格式讀取兩個數(shù)據(jù),并分別賦值給變量m和x;fprintf(fp,“%d%c”,n

8、,ch);/將n和ch變量分別以%d和%c的格式寫入到fp所指向的文件中去;10.3 文件定位10.3.1 rewind函數(shù)10.3.2 fseek函數(shù)10.3.3 ftell函數(shù)10.3.4 文件的錯誤檢測10.3 文件的定位文件讀寫默認(rèn)的是對文件位置指針當(dāng)前所在的位置進(jìn)行處理,而因為特殊需求,用戶需要具體定位到文件中的某個特殊位置,此時需要定位到該位置去。10.3.1 rewind函數(shù)rewind:使文件位置指針重新回到文件的開頭位置。調(diào)用格式: rewind(fp);10.3 文件的定位(續(xù))10.3.2 fseek函數(shù)fseek函數(shù)用來移動文件內(nèi)部位置指針,常用于二進(jìn)制文件,調(diào)用格式:

9、 fseek(fp,offset,origin);其中:“offset”是位移量,表示移動的字節(jié)數(shù);“origin”是起始點,表示計算偏移量的起始點,規(guī)定的起始點有三種:文件首,當(dāng)前位置和文件尾。起始點表示符號數(shù)字表示文件首SEEK_SET0當(dāng)前位置SEEK_CUR1文件末尾SEEK_END210.3 文件的定位(續(xù))10.3.3 ftell函數(shù)ftell函數(shù)用來獲取文件位置指針的當(dāng)前位置,調(diào)用格式: ftell(fp);該函數(shù)用以得到fp所指向的文件的位置指針相對于文件頭部的偏移量,單位是字節(jié)。10.3 文件的定位(續(xù))10.3.4 文件的錯誤檢測1. ferror函數(shù)文件出錯檢測函數(shù),調(diào)用

10、格式:ferror(fp);說明:在文件讀寫期間,若操作出錯則此函數(shù)返回值為非零值,若操作正確則返回0;在執(zhí)行fopen函數(shù)時,ferror函數(shù)的初始值自動設(shè)置為0。2. clearerr函數(shù)文件出錯復(fù)位函數(shù),調(diào)用格式:clearerr(fp);說明:文件出錯時系統(tǒng)將對其出錯標(biāo)志進(jìn)行設(shè)置。調(diào)用該函數(shù)可以復(fù)位其出錯標(biāo)志,即清除fp指定的文件的錯誤標(biāo)志和文件結(jié)束標(biāo)志。函數(shù)沒有返回值。例1:從鍵盤輸入一個字符串,把它輸出到磁盤文件file1.txt中;分析:1.定義一個字符數(shù)組,按照合適的方法完成輸入;2.調(diào)用fputs函數(shù)將字符串的內(nèi)容輸入到指定文件。參考代碼段:char str100;FILE

11、*fp; if(fp=fopen(file1.txt,wb)=NULL) printf(cannot open filen);return;gets(str);fputs(str,fp);10.4 編譯預(yù)處理10.4.1 宏定義10.4.2 文件包含10.4.3 條件編譯10.4 編譯預(yù)處理常用的預(yù)處理命令有:宏定義、文件包含和條件編譯。10.3.1宏定義C語言中宏用define命令定義,一般形式為:#define 標(biāo)識符 值1. 簡單宏,一般形式為:#define 標(biāo)識符 值 如: #define PI 3.14 #define N 1002. 帶參數(shù)的宏 在C語言程序程序中,經(jīng)常把那些反復(fù)

12、使用的運算表達(dá)式甚至某些操作定義為參數(shù)化宏。此時,宏名帶有一個或多個形式參數(shù),在宏定義中的參數(shù)稱為形式參數(shù),在宏調(diào)用中的參數(shù)稱為實際參數(shù)。一般形式為: #define 宏名(形參表) 字符串例如: #define M(y) y*y+3*y /*宏定義*/ k=M(5); /*宏調(diào)用*/10.4.2 文件包含文件包含是C預(yù)處理程序的另一個重要功能。 文件包含命令行的一般形式為: #include文件名 1.一般情況下,包含命令中的文件名可以用雙引號括起來,也可以用尖括號括起來。例如以下寫法都是允許的:#includestdio.h#include2.一個include命令只能包含一個指定文件;3

13、.文件包含允許嵌套,即在一個被包含的文件中又可以包含另一個文件。10.4.3 條件編譯預(yù)處理提供了條件編譯的功能。可以按不同的條件去編譯不同的程序部分,因而產(chǎn)生不同的目標(biāo)代碼文件,條件編譯可以有以下三種形式:第一種形式:#ifdef 標(biāo)識符 程序段1#else 程序段2#endif第二種形式: #ifndef 標(biāo)識符 程序段1 #else 程序段2 #endif 第三種形式: #if 常量表達(dá)式 程序段1 #else 程序段2 #endif10.5 知識點強化與應(yīng)用例2:定義一個結(jié)構(gòu)體用來描述學(xué)生的基本信息(學(xué)號、姓名、數(shù)學(xué)分?jǐn)?shù)),錄入5個學(xué)生信息后,將信息保存到student.txt文件,然后將信息導(dǎo)出后,輸出到屏幕。1.先定義結(jié)構(gòu)體,并定義全局結(jié)構(gòu)體數(shù)組;2.定義input

溫馨提示

  • 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

提交評論