




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、01020310.1 文件概述10.2 文件操作10.3 文件的定位第十章 文件040510.4 編譯預處理10.5 知識點強化與應用10.6 本章小結06【學習要點】1.文件的概念2.文件的打開、數據寫入和讀取3.簡單宏定義和帶參宏定義的使用4.條件編譯本章主要介紹文件的常用操作和條件編譯的使用。為了完成對之前錄入的學生信息長期存放,現需要將其存放在E盤的student.txt文件中,并能方便的將該文件中需要的信息讀出,并進行相關操作。【導入案例:數據的長期存儲及讀取】在學生信息管理系統(tǒng)中,每次運行系統(tǒng)所錄入的數據和運算得到的結果都只存儲在內存中,下次再次運行系統(tǒng)時,之前的數據都會消失,不符
2、合系統(tǒng)的真實場景,在實際應用過程中,顯然會帶來許多不便。【解決方案】將之前存放在內存中的數據存儲到磁盤上對應的文件中去。分析10.1 文件概述10.1.1 文件的概念10.1.2 文件的分類10.1.1文件的概念所謂“文件”一般指:存儲在外部介質(如磁盤)上數據的集合。將數據存放在文件中,是為了對數據進行長期的保存,彌補了內存不能對數據進行長期存儲的缺陷。 對數據進行存盤前,數據是存放在內存中,對文件存盤后,數據就存放到磁盤上,即:內存-磁盤(save操作) 當需要對磁盤中的數據進行處理時,先需把數據導入到內存,然后對內存中的數據進行操作,即:磁盤-內存(load操作)。10.1.2 文件的分
3、類文件可分為:ASCII碼文件和二進制文件兩種。ASCII文件也稱為文本文件,這種文件在磁盤中存放時每個字符對應一個字節(jié),C語言中的所有的源程序文件(擴展名為.c)就是ASCII文件。二進制文件是按二進制的編碼方式來存放文件的,C語言中的目標文件(擴展名為.obj)和可執(zhí)行文件(擴展名為.exe)都是二進制文件。10.2 文件操作10.2.1 文件類型指針10.2.2 文件的打開操作10.2.3 文件的關閉操作10.2.4 文件的讀寫操作10.2.1文件類型指針用一個指針變量指向一個文件,這個指針稱為文件指針。通過文件指針就可對它所指的文件進行各種操作。定義說明文件指針的一般形式為: FILE
4、 *指針變量標識符;10.2.2 文件的打開打開文件,實際上是建立文件的各種有關信息,并使文件指針指向該文件,以便進行其它操作,一般是調用fopen函數。打開文件的一般方法為:文件指針名 = fopen(文件名,使用文件方式);其中:“文件指針名”必須是被說明為FILE 類型的指針變量;“文件名”是被打開文件的文件名;(或文件的詳細路徑)“使用文件方式”是指文件的類型和操作要求。例如:FILE *fp1,fp2;fp1=(“t1.txt,r);fp2=(c:hzk16,rb)10.2.2 文件的打開(續(xù))文件的使用方式主要如下表所示:使用方式 意義使用方式意義 rt只讀打開一個文本文件 rt+
5、讀寫打開一個文本文件 wt只寫打開或建立一個文本文件wt+ 讀寫打開或建立一個文本文件 at追加打開一個文本文件at+ 讀寫打開一個文本文件,或在文件末追加數據 rb只讀打開一個二進制文件rb+ 讀寫打開一個二進制文件 wb只寫打開或建立一個二進制文件wb+ 讀寫打開或建立一個二進制文件 ab追加打開一個二進制文件ab+ 讀寫打開一個二進制文件,或在文件末追加數據10.2.3 文件的關閉文件一旦使用完畢,應用關閉文件函數把文件關閉,以避免文件的數據丟失等錯誤,一般是調用fclose函數來關閉文件。關閉的方法為: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(字符數組名,n,fp);/其中的n是一個正整數。表示從fp所指向的文件中讀取不超過 n-1個的字符,最后一個字符后加上串結束標志0。然后存放到字符數組中去。在讀入的 寫文件:fputs(字符數組名,fp);/將字符數組中的內容寫入到fp所指向的文件。10.2.4 文件的讀寫(續(xù))3)數據塊讀寫,一般用于整條記錄的讀寫 讀:fread(bu
7、ffer,size,count,fp); 寫:fwrite(buffer,size,count,fp);其中: buffer 表示內存中的一塊地址; size表示要讀寫的記錄的字節(jié)數; count表示一次性要讀寫的記錄的條數; fp是指向待讀寫的文件的文件指針;10.2.4 文件的讀寫(續(xù))4)格式化讀寫函數 讀:fscanf(文件指針,格式字符串,輸入表列); 寫:fprintf(文件指針,格式字符串,輸出表列);如:fscanf(fp,“%d%f”,&m,&x);/從fp指針所指向的文件的當前位置以%d和%f的格式讀取兩個數據,并分別賦值給變量m和x;fprintf(fp,“%d%c”,n
8、,ch);/將n和ch變量分別以%d和%c的格式寫入到fp所指向的文件中去;10.3 文件定位10.3.1 rewind函數10.3.2 fseek函數10.3.3 ftell函數10.3.4 文件的錯誤檢測10.3 文件的定位文件讀寫默認的是對文件位置指針當前所在的位置進行處理,而因為特殊需求,用戶需要具體定位到文件中的某個特殊位置,此時需要定位到該位置去。10.3.1 rewind函數rewind:使文件位置指針重新回到文件的開頭位置。調用格式: rewind(fp);10.3 文件的定位(續(xù))10.3.2 fseek函數fseek函數用來移動文件內部位置指針,常用于二進制文件,調用格式:
9、 fseek(fp,offset,origin);其中:“offset”是位移量,表示移動的字節(jié)數;“origin”是起始點,表示計算偏移量的起始點,規(guī)定的起始點有三種:文件首,當前位置和文件尾。起始點表示符號數字表示文件首SEEK_SET0當前位置SEEK_CUR1文件末尾SEEK_END210.3 文件的定位(續(xù))10.3.3 ftell函數ftell函數用來獲取文件位置指針的當前位置,調用格式: ftell(fp);該函數用以得到fp所指向的文件的位置指針相對于文件頭部的偏移量,單位是字節(jié)。10.3 文件的定位(續(xù))10.3.4 文件的錯誤檢測1. ferror函數文件出錯檢測函數,調用
10、格式:ferror(fp);說明:在文件讀寫期間,若操作出錯則此函數返回值為非零值,若操作正確則返回0;在執(zhí)行fopen函數時,ferror函數的初始值自動設置為0。2. clearerr函數文件出錯復位函數,調用格式:clearerr(fp);說明:文件出錯時系統(tǒng)將對其出錯標志進行設置。調用該函數可以復位其出錯標志,即清除fp指定的文件的錯誤標志和文件結束標志。函數沒有返回值。例1:從鍵盤輸入一個字符串,把它輸出到磁盤文件file1.txt中;分析:1.定義一個字符數組,按照合適的方法完成輸入;2.調用fputs函數將字符串的內容輸入到指定文件。參考代碼段:char str100;FILE
11、*fp; if(fp=fopen(file1.txt,wb)=NULL) printf(cannot open filen);return;gets(str);fputs(str,fp);10.4 編譯預處理10.4.1 宏定義10.4.2 文件包含10.4.3 條件編譯10.4 編譯預處理常用的預處理命令有:宏定義、文件包含和條件編譯。10.3.1宏定義C語言中宏用define命令定義,一般形式為:#define 標識符 值1. 簡單宏,一般形式為:#define 標識符 值 如: #define PI 3.14 #define N 1002. 帶參數的宏 在C語言程序程序中,經常把那些反復
12、使用的運算表達式甚至某些操作定義為參數化宏。此時,宏名帶有一個或多個形式參數,在宏定義中的參數稱為形式參數,在宏調用中的參數稱為實際參數。一般形式為: #define 宏名(形參表) 字符串例如: #define M(y) y*y+3*y /*宏定義*/ k=M(5); /*宏調用*/10.4.2 文件包含文件包含是C預處理程序的另一個重要功能。 文件包含命令行的一般形式為: #include文件名 1.一般情況下,包含命令中的文件名可以用雙引號括起來,也可以用尖括號括起來。例如以下寫法都是允許的:#includestdio.h#include2.一個include命令只能包含一個指定文件;3
13、.文件包含允許嵌套,即在一個被包含的文件中又可以包含另一個文件。10.4.3 條件編譯預處理提供了條件編譯的功能。可以按不同的條件去編譯不同的程序部分,因而產生不同的目標代碼文件,條件編譯可以有以下三種形式:第一種形式:#ifdef 標識符 程序段1#else 程序段2#endif第二種形式: #ifndef 標識符 程序段1 #else 程序段2 #endif 第三種形式: #if 常量表達式 程序段1 #else 程序段2 #endif10.5 知識點強化與應用例2:定義一個結構體用來描述學生的基本信息(學號、姓名、數學分數),錄入5個學生信息后,將信息保存到student.txt文件,然后將信息導出后,輸出到屏幕。1.先定義結構體,并定義全局結構體數組;2.定義input
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 家用紡織品的產品差異化與競爭優(yōu)勢考核試卷
- 智能車載設備的故障預測考核試卷
- 工藝美術品的商業(yè)模式創(chuàng)新考核試卷
- 專業(yè)技術培訓引領行業(yè)變革考核試卷
- 家居裝飾裝修中的施工質量控制考核試卷
- 城市軌道交通的旅客負擔與收入分析考核試卷
- 技術標準制定考核試卷
- 工業(yè)控制計算機在電力系統(tǒng)的應用考核試卷
- 學校租賃土地合同范本
- 公司并購簽約合同范本
- 地基注漿加固記錄表
- CA-PDS新品投產管理手冊
- 初中生物實驗目錄(蘇教版)
- 2022年幼兒語言教育活動設計與指導完整版課件整套電子教案
- 2019年四川省綿陽市中考化學試卷
- 人教PEP版四年級下冊小學英語全冊同步練習(一課一練)
- DB44∕T 1786-2015 自然保護區(qū)陸生野生脊椎動物物種多樣性調查與監(jiān)測技術規(guī)范
- 01大學語文緒論
- 交通運輸安全管理整套教學課件
- 中國風青花瓷陶瓷文化宣傳PPT模板
- 水力壓裂技術詳解334頁(PPT 最新技術)_ppt
評論
0/150
提交評論