




版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖南省郴州市2024-2025學(xué)年八年級下學(xué)期5月期中英語試題(含筆試答案無聽力答案、原文及音頻)
- 建筑施工特種作業(yè)-建筑起重機械安裝拆卸工(施工升降機)真題庫-3
- 日食月食地理題目及答案
- 國家標(biāo)準(zhǔn)關(guān)于《機械制圖》的基本規(guī)定(二)
- 2023-2024學(xué)年山東省濱州市高二下學(xué)期7月期末數(shù)學(xué)試題(解析版)
- 2023-2024學(xué)年湖南省株洲市炎陵縣高二下學(xué)期6月期末考試數(shù)學(xué)試題(解析版)
- 2023-2024學(xué)年河南省安陽市林州市高二下學(xué)期期末考試數(shù)學(xué)試卷(解析版)
- 2025屆河南省新鄉(xiāng)市高三二模語文試題(解析版)
- 2024-2025學(xué)年浙江省杭州市聯(lián)誼學(xué)校高二3月月考語文試題(解析版)
- 江蘇阿爾法生物制藥有限公司新建制劑、生物發(fā)酵及機械加工建設(shè)項目環(huán)評資料環(huán)境影響
- 汽車吊塔吊防碰撞安全技術(shù)交底
- 一年級下冊音樂教案 (簡譜) (演唱)同坐小竹排(7) 湘藝版
- 砂石料加工廠勞務(wù)外包服務(wù)采購項目
- 列車網(wǎng)絡(luò)控制技術(shù)-復(fù)習(xí)打印版
- 福建高考名著《紅樓夢》填空題+答案
- 商標(biāo)法期末復(fù)習(xí)
- 材料力學(xué)計算試題(庫)完整
- 投資控股集團有限公司安全生產(chǎn)責(zé)任制暫行辦法
- NGW型行星齒輪傳動系統(tǒng)的優(yōu)化設(shè)計
- 三年級上冊數(shù)學(xué)教案-第七單元 分?jǐn)?shù)的初步認(rèn)識 蘇教版
- 2019第五版新版PFMEA 注塑實例
評論
0/150
提交評論