版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
C語言程序設計第9章文件脈絡導圖C語言程序設計技能目標C語言程序設計學會文件的讀取及將程序運行結果保存在文件中的能力。素質目標C語言程序設計(1)通過文件的讀寫、文件管理的學習,同學們學會保存資料、資料共享等日常工作。(2)大數據時代,同學們應該增強信息保護的意識,防止個人隱私數據泄露。9.1文件的概念和基本操作C語言程序設計“文件”是指一組相關數據的有序集合。這個數據集有一個名稱,稱為文件名。實際上在前面的各章中已經多次使用了文件。例如,源程序文件、目標文件、可執(zhí)行文件和庫文件等。文件通常是駐留在外部介質(如磁盤)上的,在需要使用時才調入內存中來。文件概述9.1文件的概念和基本操作C語言程序設計文件有很多種,大家熟知的有文本文件、圖形圖像文件、聲音文件、視頻文件等,它們可以有很多的分類方法。(1)從用戶角度分類。(2)從文件編碼方式分類。(3)從文件的處理方式分類。文件的分類9.1文件的概念和基本操作C語言程序設計文件指針是指用一個指針變量指向一個文件。通過文件指針可對它所指的文件進行各種操作。定義說明文件指針的一般格式如下:FILE*指針變量標識符;其中,FILE應為大寫,它實際上是由系統(tǒng)定義的一個結構,該結構中包含文件名、文件狀態(tài)和文件當前位置等信息。例如,FILE*fp;,表示fp是指向FILE結構的指針變量,通過fp即可找存放某個文件信息的結構變量,然后按結構變量提供的信息找到該文件,實施對文件的操作。習慣上也籠統(tǒng)地把fp稱為指向一個文件的指針。文件類型指針9.1文件的概念和基本操作C語言程序設計fopen()函數用來打開一個文件,一般格式如下:文件指針名=fopen(文件名,使用文件方式);其中,“文件指針名”必須是被說明為FILE類型的指針變量,“文件名”是被打開文件的文件名,其類型為字符串常量或字符串數組;“使用文件方式”是指文件的類型和操作要求。例如,FILE*fp;fp=fopen("example.txt","r");,表示打開名為example.txt的文件,文件使用的方式為“只讀”。fopen()函數返回指向example.txt文件的指針并賦給fp,這樣fp與example.txt相聯系了,或者說fp指向了example.txt文件。文件打開fopen()函數9.1文件的概念和基本操作C語言程序設計名師點睛(1)文件使用方式由r、w、a、t、b和+這6個字符拼成。各個字符的含義是:r(read)為讀;w(write)為寫;a(append)為追加;t(text)為文本文件,可省略不寫;b(banary)為二進制文件;+為讀和寫。(2)用以上方式可以打開文本文件或二進制文件,這是ANSIC的規(guī)定,即用同一種文件緩沖系統(tǒng)來處理文本文件和二進制文件。(3)在讀取文本文件時,會自動將回車、換行兩個字符轉換為一個換行符;在寫入時會自動將一個換行符轉換為回車和換行兩個字符。在用二進制文件時,不會進行這種轉換,因為在內存中的數據形式與寫入外部文件中的數據形式完全一致,一一對應。(4)在打開一個文件時,如果出錯,fopen()函數將返回一個空指針值NULL。9.1文件的概念和基本操作C語言程序設計文件使用完畢后應將它關閉,以保證本次文件操作的有效?!瓣P閉”就是使文件指針變量不指向該文件,也就是文件指針變量與文件“脫鉤”。此后不能再通過該指針對原來關聯的文件進行操作。用fclose()函數關閉文件,一般格式如下:fclose(文件指針名);例如,fclose(fp);,正常完成關閉文件操作時,fclose()函數返回值為0,若返回值非零,則表示有錯誤發(fā)生??捎胒error()函數來測試。文件關閉fclose()函數9.1文件的概念和基本操作C語言程序設計fputc()函數的功能是把一個字符寫入指定的文件中,即字符表達式的字符輸出到文件指針所指向的文件。一般格式如下:fputc(字符表達式,文件指針);其中,字符表達式即待寫入的字符量,可以是字符常量或變量。例如,fputc('a',fp);,表示把字符a寫入fp所指向的文件中。寫字符fputc()函數9.1文件的概念和基本操作C語言程序設計名師點睛(1)被寫入的文件可以用寫、讀寫、追加方式打開,用寫或讀方式打開一個已存在的文件時將清除原有的文件內容,寫入字符從文件首地址開始。(2)每寫入一個字符,文件內部位置指針向后移動1字節(jié)。(3)fputc()函數有一個返回值,若寫入成功則返回寫入字符,否則返回一個EOF??捎么藖砼袛鄬懭胧欠癯晒Α語言程序設計【例9-1】從鍵盤輸入一行字符,將其輸出到D盤根目錄file.txt文件中。運行結果語句編寫
9.1文件的概念和基本操作程序說明:首先使用fopen()函數以只讀方式打開“d:\file.txt”文件,然后從鍵盤輸入字符串到一個字符數組中,最后將字符數組中的字符逐個寫入文件中。源代碼見教材日期為:2022.7.69.1文件的概念和基本操作C語言程序設計fgetc()函數的功能是從指定的文件中讀一個字符,該字符的ASCII碼值作為函數的返回值。若讀取字符時文件已經結束或出錯,fgetc()函數返回文件結束標記EOF,此時EOF的值為-1。一般格式如下:字符變量=fgetc(文件指針);例如,ch=fgetc(fp);,表示從打開的文件fp中讀取一個字符并送入ch中。讀字符fgetc()函數9.1文件的概念和基本操作C語言程序設計名師點睛(1)在fgetc()函數調用中,讀取的文件必須是以讀或讀寫方式打開的。(2)讀取字符的結果也可以不向字符變量賦值。例如,fgetc(fp);該操作讀出的字符是不能保存的。(3)在文件內部有一個位置指針,用來指向文件的當前讀寫字節(jié)。在文件打開時,該指針總是指向文件的第1字節(jié)。使用fgetc()函數后,該指針將向后移動1字節(jié),因此可連續(xù)多次使用fgetc()函數讀取多個字符。C語言程序設計【例9-2】使用fopen()函數以只讀方式打開“d:\\9-2.txt”文件,用fgetc()函數從文件中逐個讀取字符并輸出到屏幕上。運行結果語句編寫
9.1文件的概念和基本操作程序說明:打開文件后,fgetc()函數讀取的是第一個字符,調用fgetc()函數依次讀取下一個字符,若讀至文件結束位置,則返回EOF。源代碼見教材日期為:2022.7.69.1文件的概念和基本操作C語言程序設計fputs()函數的功能是向指定的文件寫入一個字符串。一般格式如下:fputs(字符串,文件指針);其中,字符串可以是字符串常量,也可以是字符數組名,或指針型指針變量。字符串末尾的'\0'不輸出,若輸出成功,函數值返回0,失敗則為EOF。例如,fputs("abcd",fp);,表示把字符串"abcd"寫入fp所指的文件中。寫字符串fputs()函數9.1文件的概念和基本操作C語言程序設計fgets()函數的功能是從指定的文件中讀一個字符串到字符數組中。一般格式如下:fgets(字符數組名,n,文件指針);其中,n是一個正整數,表示從文件中讀出的字符串不超過n-1個字符。在讀入的最后一個字符后加上串結束標志'\0'。例如,fgets(str,n,fp);,表示從fp所指的文件中讀出n-1個字符送入字符數組str中。讀字符串fgets()函數9.1文件的概念和基本操作C語言程序設計fread()函數和fwrite()函數是用于整塊數據的讀寫。它們可用來讀寫一組數據,如一個數組元素、一個結構變量的值等。一般格式如下:fread(buffer,size,count,fp);fwrite(buffer,size,count,fp);其中,buffer是一個指針,在fread()函數中,它表示存放輸入數據的首地址,在fwrite()函數中,它表示存放輸出數據的首地址;size表示數據塊的字節(jié)數;count表示要讀寫的數據塊塊數;fp表示文件指針。例如,fread(fa,4,5,fp);,表示從fp所指的文件中,每次讀4字節(jié)送入實數組fa中,連續(xù)讀5次,即讀5個實數到fa中。數據塊讀寫fread()函數和fwrite()函數C語言程序設計【例9-3】輸入3個日期(年月日),寫入“d:\\9-3.txt”中,再從文件中讀出并顯示。運行結果語句編寫
9.1文件的概念和基本操作程序說明:定義一個有3個元素的結構體數組,用于存放年月日。從鍵盤輸入數據,用fwrite()函數將數據輸入文件,再用fread()函數將數據從文件中讀取出來后輸出到屏幕上。源代碼見教材請輸入3個日期,年、月、日以空格隔開:2022772022782022799-3.txt文件中的數據為:2022772022782022799.1文件的概念和基本操作C語言程序設計fscanf()函數和fprintf()函數與前面使用的scanf()函數和printf()函數的功能相似,都是格式化讀寫函數。兩者區(qū)別在于fscanf()函數和fprintf()函數的讀寫對象不是鍵盤和顯示器,而是磁盤文件。一般格式如下:fscanf(文件指針,格式字符串,輸入列表);fprintf(文件指針,格式字符串,輸出列表);例如,fscanf(fp,"%d%s",&i,s);fprintf((fp,"%d%c",j,ch);格式化讀寫fscanf()函數和fprintf()函數C語言程序設計【例9-3】輸入3個日期(年月日),寫入“d:\\9-3.txt”中,再從文件中讀出并顯示。運行結果語句編寫
9.1文件的概念和基本操作程序說明:首先定義一個一維數組用于存放從文件中讀取的數據,然后讀取文件中的數字賦給數組元素。計算這些數據元素的平均值,并追加到原始數據后面。源代碼見教材請9.1文件的概念和基本操作C語言程序設計rewind()函數的功能是將文件位置指針移至文件起始處。一般格式如下:rewind(fp);其中,fp為由fopen()函數打開的文件指針。rewind()函數9.1文件的概念和基本操作C語言程序設計fseek()函數用于將文件位置指針移到指定位置。一般格式如下:fseek(fp,位移量,起始點);其中,fp是文件指針,指向被移動的文件;位移量是移動的字節(jié)數,要求位移量是long型數據,位移量可正可負。位移量為正數時,位置指針向文件尾方向移動,位移量為負數時,位置指針向文件頭方向移動。起始點是位移量的參考點,有三種取值:0代表文件開始位置,1代表當前位置,2代表文件尾位置。例如,fseek(fp,50L,0);,表示以文件開頭為基準,文件位置指針向文件尾方向移動50字節(jié)。fseek()函數C語言程序設計【例9-5】創(chuàng)建名為“9-5.txt”的文件,輸入“ILoveChina!”并存放進文件中,讀取單詞“China”并輸出到終端。運行結果語句編寫
9.1文件的概念和基本操作程序說明:按“二進制讀寫”方式創(chuàng)建并打開指定的文件,文件名由終端輸入。然后在文件中寫入“ILoveChina!”字符串,利用fseek()函數將文件位置指針指向“China!”的字母“C”處,最后讀取“China!”并輸出到終端。源代碼見教材請輸入文件名:9-5請輸入一句話:ILoveChina!China!9.1文件的概念和基本操作C語言程序設計ftell()函數用于尋找位置指針的當前位置。一般格式如下:longn;n=ftell(fp);返回值為文件位置指針當前位置相對于文件開始的偏移字節(jié)數,若函數調用出錯,則返回-1。ftell()函數9.1文件的概念和基本操作C語言程序設計feof()函數用于判斷文件位置指針是否在文件結束位置。一般格式如下:feof(fp);當文件位置指針在文件末尾時,返回值為1,否則返回值為0。feof()函數9.1文件的概念和基本操作C語言程序設計大多數輸入/輸出函數不具有明確的出錯信息返回,在調用各種輸入/輸出函數時,若出現了錯誤,除了函數返回值有所反映外,還可用ferror()函數檢查。一般格式如下:ferror(fp);其中,fp為指向當前文件的指針。在使用各種輸入/輸出函數進行讀寫時是否出錯,若出錯,返回值為1,否則返回0。ferror()函數9.1文件的概念和基本操作C語言程序設計clearerr()函數使文件錯誤標志和文件結束標志置為0。假設在調用一個輸入/輸出函數時出現錯誤,ferror()函數值為一個非零值。在調用clearerr(fp)后,ferror(fp)的值變?yōu)?。只要出現錯誤標志,就一直保留,直到對同一文件調用clearerr()函數或rewind()函數,或任何其他一個輸入/輸出函數。一般格式如下:clearerr(文件指針);clearerr()函數9.2常見錯誤分析C語言程序設計文件操作要素不全文件操作三要素為打開、打開判斷和關閉,初學者通常容易忘記判斷打開是否成功或關閉文件,而且由于這類錯誤在程序編譯及鏈接時并不報錯,很容易被忽略。因此,在編寫文件操作程序時可先把三要素寫好,然后再添加其他操作程序段。9.2常見錯誤分析C語言程序設計打開方式有誤要注意打開方式的差別,只寫方式為只可寫不可讀,只讀方式為只可讀不可寫。另外,寫方式會新建文件,若想保留原文件內容,則應選擇追加方式,否則原內容會丟失。例如,if((fp=fopen("test","r"))==NULL){ printf("Cannotopenfile!"); exit(0);}fputs(str,fp);用只讀方式打開文件,卻試圖向該文件寫入數據,顯然是不行的。9.2常見錯誤分析C語言程序設計文件位置指針混亂編程時應了解當前文件位置指針的位置,如需要從文件開始進行操作,應保證此時位置指針在文件的開始處,或用rewind()函數將指針強制定位。如果不了解當前文件位置指針的位置,可用ftell()函數查找,然后再進行合適的定位。9.3文件綜合應用實戰(zhàn)C語言程序設計實戰(zhàn)背景《中國詩詞大會》(ChinesePoetryConference)是央視首檔全民參與的詩詞節(jié)目,節(jié)目以“賞中華詩詞、尋文化基因、品生活之美”為基本宗旨,力求通過對詩詞知識的比拼及賞析,帶動全民重溫那些曾經學過的古詩詞,分享詩詞之美,感受詩詞之
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度石油化工設備采購合同補充協議范本3篇
- 二零二五年度vi設計創(chuàng)意制作合同范本2篇
- 二零二五版環(huán)境安全風險評估與治理合同3篇
- 合同管理在2025年度招投標中的合規(guī)性分析3篇
- 二零二五版企業(yè)內部技術人員掛靠合作合同范本3篇
- 二零二五年度高壓電氣設備采購及安裝合同2篇
- 二零二五版寶鋼集團勞動合同員工加班費及休息日工作安排3篇
- 二零二五年度車輛質押擔保合同樣本2篇
- 二零二五版公路貨運合同道路運輸許可證管理與審查規(guī)范3篇
- 二零二五年度綠色環(huán)保房地產商品房買賣合同書3篇
- Unit 1 同步練習人教版2024七年級英語上冊
- 工程管理重大風險應對方案
- 直播帶貨助農現狀及發(fā)展對策研究-以抖音直播為例(開題)
- 腰椎間盤突出疑難病例討論
- 《光伏發(fā)電工程工程量清單計價規(guī)范》
- 2023-2024學年度人教版四年級語文上冊寒假作業(yè)
- (完整版)保證藥品信息來源合法、真實、安全的管理措施、情況說明及相關證明
- 營銷專員績效考核指標
- 陜西麟游風電吊裝方案專家論證版
- 供應商審核培訓教程
- 【盒馬鮮生生鮮類產品配送服務問題及優(yōu)化建議分析10000字(論文)】
評論
0/150
提交評論