




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第9章文件信息工程學院主講人:XXX內容提要4
文件的相關概念12文件的打開與關閉423文件的順序讀寫與隨機讀寫42文件的出錯檢測425244419.1文件的相關概念(1)按文件中數據存放的格式,可以將文件分為“二進制文件”和“文本文件”。二進制文件中的數據都是以二進制形式(機器數)存放的。(2)按文件的讀寫方式,可以將文件分為順序文件和隨機文件。對順序文件來說,讀寫必須從頭開始。讀取數據時,只能從第1個數據開始讀取,直到讀取的數據就是要處理的數據為止。如果要把處理后的這個數據寫回順序文件中,也必須是從第1個數據開始,依次把所有數據寫到文件中。對隨機文件來說,讀寫的過程是隨機的,只要利用系統(tǒng)函數將當前文件中的讀寫位置設置好,就可以單獨對這個數據進行讀寫操作。文件指針在C語言中,可用一個指針變量指向一個文件,這個指針變量稱為文件指針。通過文件指針就可以對它所指向的文件進行操作了。定義文件指針的一般形式為:FILE*指針變量名;其中,FILE應為大寫,它是由系統(tǒng)定義的一個結構,該結構中含有文件名、文件狀態(tài)和文件當前位置等信息。在編程時不必關心FILE結構的細節(jié)。
9.2文件的打開與關閉文件打開函數用fopen函數打開一個文件,函數定義的一般形式為:FILE*fopen(constchar*path,constchar*mode);path字符串包含欲打開的文件路徑及文件名,mode字符串則代表流形態(tài)。mode有下列幾種形態(tài)。(1)r:打開只讀文件,該文件必須存在。(2)r+:打開可讀寫的文件,該文件必須存在。(3)w:打開只寫文件,若文件存在,則文件長度清為0,即該文件內容會消失。若文件不存在,則建立該文件。(4)w+:打開可讀寫文件,若文件存在,則文件長度清為零,即該文件內容會消失。若文件不存在,則建立該文件。(5)a:以附加的方式打開只寫文件。若文件不存在,則建立該文件,若文件存在,則寫入的數據會被加到文件尾,即文件原來的內容會被保留。(6)a+:以附加方式打開可讀寫文件。若文件不存在,則建立該文件,若文件存在,則寫入的數據會被加到文件尾后,即文件原來的內容會被保留。9.2文件的打開與關閉例如:FILE*fp=fopen("d:\a.txt","r");表示要打開d:\a.txt文件,文件操作方式為“只讀”,fopen函數返回指向a.txt文件的指針并賦給fp,這樣,fp和a.txt就建立聯(lián)系了,或者說fp指向a.txt文件。關閉文件用fclose函數實現,調用fopen函數的一般形式為:fclose(文件指針變量);例如:fclose(fp);9.2文件的打開與關閉【例9.1】文件的打開與關閉。9.3文件的順序讀寫C語言提供了輸出一個字符到磁盤文件的fputc函數。其一般形式如下:fputc(ch,fp);它的功能是將字符變量ch的值輸出到指針變量fp所指向的FILE結構體的文件中。這個fp是用fopen函數打開時得到的。如果調用成功,則返回該字符,否則返回EOF。C語言還提供了從磁盤文件中接收一個字符的fgetc函數。其一般形式如下:ch=fgetc(fp);它的功能是從指針變量fp所指向的文件中讀入一個字符并賦給字符變量ch。如果執(zhí)行fgetc函數時遇到文件結束或出錯,則返回EOF。9.3文件的順序讀寫【例9.2】fputc函數和fgetc函數的使用。9.3文件的順序讀寫【例9.3】分析下面程序的運行結果。9.3文件的順序讀寫C語言提供了一個從磁盤文件中輸入字符串的fgets函數,其一般形式如下:fgets(str,n,fp);它的功能是從fp指向的文件中讀取n?1個字符并把它們放到字符數組str中。如果在讀入n?1個字符完成之前遇到換行符\n或文件結束符EOF,則結束讀入,但將遇到的換行符\n也作為一個字符送入字符數組str中。C語言還提供一個輸出字符串到磁盤文件的fputs函數。其一般形式如下:fputs(str,fp);它的功能是將字符數組str中的字符串輸出到fp所指向的文件。但字符串的結束符\0不輸出。如果成功,則返回0,否則返回非0。9.3文件的順序讀寫【例9.4】fputs函數和fgets函數的使用。9.3文件的順序讀寫9.3.3fprintf函數和fscanf函數fprintf與fscanf函數為格式讀寫函數,與printf、scanf類似,fprintf與fscanf用于從文件中讀取指定格式的數據和把指定格式的數據寫入文件,這是按數據格式要求進行文件的輸入/輸出。其一般形式為:fscanf(fp,format,args);fprintf(fp,format,args);其中,fp為文件指針,format為格式控制字符串,args為輸入或輸出的地址列表。例如,若文件指針fp已指向一個已打開的文件文本,a、b分別為整型變量,則以下語句從fp所指向的文件中讀入兩個整數放入變量a和b中。fscanf(fp,”%d%d”,&a,&b);又如,若文件指針fp已指向一個已打開的文件文本,x、y分別為整型變量,則以下語句將x、y中的數據按%d的格式輸出到fp所指向的文件中。fprintf(fp,"%d%d",&a,&b);9.3文件的順序讀寫【例9.5】fprintf函數和fscanf函數的使用。9.4文件的隨機讀寫上節(jié)介紹的對文件的讀寫都是順序讀寫,即從文件的開頭對數據逐個讀寫。文件中有一個讀寫位置的內部指針,指向當前讀寫的位置。在順序讀寫時,每讀或寫一個數據后,位置指針就自動移到它后面一個位置。如果讀寫的數據項包含多字節(jié),則對該數據項讀寫完后位置指針就移到該數據項之末了。在實際讀寫文件中,人們常常希望能直接讀到某一數據項而不是按物理位置順序逐個讀下來。這種可以任意指定讀寫位置的操作稱為文件的隨機讀寫??梢韵胂?,只要能移動位置指針到所需要的地方,實現文件的定位,就能實現隨機讀寫。9.4文件的隨機讀寫1.fseek函數fseek函數的功能是使位置指針移動到所需的指定位置,調用fseek函數的一般形式為fseek(文件類型指針,位移量,起始點)其中,起始點是指用數字代表以什么地方作為基準進行移動。0,1,2分別代表文件的開頭、當前位置和結尾。如果位移量為正數則表示以起始點為基點向前移動的字節(jié)數,否則表示以起始點為基點向后移動的字節(jié)數。位移量應該為long型數據,這樣當文件長度很長時,位移量仍在long型數據的表示范圍內。例如:fseek(fp,10L,0);將位置指針移動到距文件開始處10字節(jié)的地方。若函數調用成功,則返回值為0,否則返回一個非0值。2.ftell函數ftell函數的作用是返回位置指針的當前位置。其一般形式為:ftell(fp);ftell函數的返回值是fp所指向的文件中位置指針的當前位置。如果出錯,則ftell的返回值為?13.rewind函數rewind函數的作用是使位置指針重新返回到文件的開頭處。其一般形式為:rewind(fp);rewind函數無返回值。9.5文件操作的出錯檢測大多數標準I/O函數并不具有明確的出錯信息返回。例如,如果調用fputc函數返回EOF,它可能表示文件結束,也可能是調用失敗或出錯。調用fgets函數時,如果返回NULL,它可能是文件結束,也可能是出錯。為了明確地檢查出操作是否出錯,C提供了一個檢測文件操作的出錯函數ferror。例如:ferror(fp);如果函數的返回值為0,則表示沒有出錯,否則表示出錯。在調用fopen函數時,會自動使相應文件的ferror函數的初值為零。應當注意,每調用一次輸入/輸出函數后,都有一個ferror函數值與之對應。如果想檢測的調用輸入/輸出函數是否出錯,應在調用該函數后立即
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度設備安裝安全協(xié)議及設備安裝驗收證書
- 二零二五年度房地產租賃稅務籌劃與合同管理服務協(xié)議
- 二零二五年度住宅及地下室使用權租賃合同
- 2025年度智能化綠植養(yǎng)護服務合同協(xié)議書模板
- 二零二五年度珠寶店電子商務平臺合作開發(fā)合同
- 二零二五年度企業(yè)稅收籌劃審計委托合同
- 二零二五年度古裝劇編劇聘用合同
- 二零二五年度海參干貨質量檢測與認證合同
- 2025年度生態(tài)浴室租賃經營合同
- 2025年度汽車經銷商汽車按揭貸款及售后服務協(xié)議
- 防洪防汛監(jiān)理細則
- 2023年青島遠洋船員職業(yè)學院高職單招(數學)試題庫含答案解析
- GB/T 25137-2010鈦及鈦合金鍛件
- 公司安全生產管理架構圖
- 服飾禮儀四三七三七一一五
- 團課知識點考團課必備
- 測量基礎知識和操作培訓 課件
- 第2課《說和做》課件(共30張ppt) 部編版語文七年級下冊
- 文言文之荀子《勸學》完美課件
- 計算機常見故障的判斷和維修課件
- 《鐵道車輛工程》第05章鐵道車輛的運行性能課件
評論
0/150
提交評論