




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
C語言程序設(shè)計教案第9章文件授課內(nèi)容第9章文件任課教師授課形式理實(shí)一體任課班級教學(xué)方法本節(jié)采用以教師為主導(dǎo),在教學(xué)過程中同時采用提問法、討論法和互動式教學(xué)方法。教學(xué)重點(diǎn)(1)理解文件的概念。(2)理解文件指針的概念。(3)掌握文件的打開與關(guān)閉。(4)掌握文件的讀寫。教學(xué)難點(diǎn)文件操作的應(yīng)用。教學(xué)目標(biāo)教學(xué)目標(biāo)熟練掌握結(jié)構(gòu)體的定義和應(yīng)用。技能目標(biāo)學(xué)會文件的讀取及將程序運(yùn)行結(jié)果保存在文件中的能力。素質(zhì)目標(biāo)(1)通過文件的讀寫、文件管理的學(xué)習(xí),同學(xué)們學(xué)會保存資料、資料共享等日常工作。(2)大數(shù)據(jù)時代,同學(xué)們應(yīng)該增強(qiáng)信息保護(hù)的意識,防止個人隱私數(shù)據(jù)泄露。思政目標(biāo)教學(xué)步驟及內(nèi)容教學(xué)步驟及內(nèi)容教學(xué)步驟及內(nèi)容教學(xué)步驟及內(nèi)容教學(xué)步驟及內(nèi)容教學(xué)步驟及內(nèi)容教學(xué)步驟及內(nèi)容:教學(xué)過程:復(fù)習(xí)舊課導(dǎo)出新課講授新課9.1文件的概念和基本操作9.1.1文件概述“文件”是指一組相關(guān)數(shù)據(jù)的有序集合。這個數(shù)據(jù)集有一個名稱,稱為文件名。實(shí)際上在前面的各章中已經(jīng)多次使用了文件。例如,源程序文件、目標(biāo)文件、可執(zhí)行文件和庫文件等。文件通常是駐留在外部介質(zhì)(如磁盤)上的,在需要使用時才調(diào)入內(nèi)存中來。1.文件的分類文件有很多種,大家熟知的有文本文件、圖形圖像文件、聲音文件、視頻文件等,它們可以有很多的分類方法。(1)從用戶角度分類。普通文件:駐留在磁盤或其他外部介質(zhì)上的一個有序數(shù)據(jù)集??梢允窃次募?、目標(biāo)文件、可執(zhí)行程序,也可以是一組待輸出處理的原始數(shù)據(jù),或者是一組輸出的結(jié)果。設(shè)備文件:與主機(jī)相連的各種外部設(shè)備,如顯示器、打印機(jī)、鍵盤等。在操作系統(tǒng)中,把外部設(shè)備也看作是一個文件來進(jìn)行管理,把它們的輸入、輸出等同于對磁盤文件的讀和寫。(2)從文件編碼方式分類。ASCII文件:也稱為文本文件,這種文件在磁盤中存放時每個字符對應(yīng)1字節(jié),用于存放對應(yīng)的ASCII碼。二進(jìn)制文件:按二進(jìn)制的編碼方式來存放文件。(3)從文件的處理方式分類。緩沖文件系統(tǒng):也稱為標(biāo)準(zhǔn)文件系統(tǒng)或高層文件系統(tǒng),是目前常用的文件系統(tǒng),也是ANSIC建議使用的文件系統(tǒng)。它與具體的機(jī)器無關(guān),通用性好,功能強(qiáng),使用方便。非緩沖文件系統(tǒng):也稱為底層文件系統(tǒng),與機(jī)器有關(guān),使用較為困難,但它節(jié)省內(nèi)存,執(zhí)行效率較高。2.文件類型指針文件指針是指用一個指針變量指向一個文件。通過文件指針可對它所指的文件進(jìn)行各種操作。定義說明文件指針的一般格式如下:FILE*指針變量標(biāo)識符;其中,F(xiàn)ILE應(yīng)為大寫,它實(shí)際上是由系統(tǒng)定義的一個結(jié)構(gòu),該結(jié)構(gòu)中包含文件名、文件狀態(tài)和文件當(dāng)前位置等信息。例如,F(xiàn)ILE*fp;,表示fp是指向FILE結(jié)構(gòu)的指針變量,通過fp即可找存放某個文件信息的結(jié)構(gòu)變量,然后按結(jié)構(gòu)變量提供的信息找到該文件,實(shí)施對文件的操作。習(xí)慣上也籠統(tǒng)地把fp稱為指向一個文件的指針。9.1.2文件的打開與關(guān)閉1.文件打開fopen()函數(shù)文件在進(jìn)行讀寫操作之前要先打開,使用完畢后要關(guān)閉。所謂打開文件,實(shí)際上是建立文件的各種有關(guān)信息,并使文件指針指向該文件,以便進(jìn)行其他操作。關(guān)閉文件則是斷開指針與文件之間的聯(lián)系,也就禁止再對該文件進(jìn)行操作。fopen()函數(shù)用來打開一個文件,一般格式如下:文件指針名=fopen(文件名,使用文件方式);其中,“文件指針名”必須是被說明為FILE類型的指針變量,“文件名”是被打開文件的文件名,其類型為字符串常量或字符串?dāng)?shù)組;“使用文件方式”是指文件的類型和操作要求。2.文件關(guān)閉fclose()函數(shù)文件使用完畢后應(yīng)將它關(guān)閉,以保證本次文件操作的有效。“關(guān)閉”就是使文件指針變量不指向該文件,也就是文件指針變量與文件“脫鉤”。此后不能再通過該指針對原來關(guān)聯(lián)的文件進(jìn)行操作。用fclose()函數(shù)關(guān)閉文件,一般格式如下:fclose(文件指針名);例如,fclose(fp);,正常完成關(guān)閉文件操作時,fclose()函數(shù)返回值為0,若返回值非零,則表示有錯誤發(fā)生??捎胒error()函數(shù)來測試。9.1.3文件的讀寫文件打開之后,可以對文件進(jìn)行讀和寫。1.寫字符fputc()函數(shù)fputc()函數(shù)的功能是把一個字符寫入指定的文件中,即字符表達(dá)式的字符輸出到文件指針?biāo)赶虻奈募?。一般格式如下:fputc(字符表達(dá)式,文件指針);其中,字符表達(dá)式即待寫入的字符量,可以是字符常量或變量。例如,fputc('a',fp);,表示把字符a寫入fp所指向的文件中。2.讀字符fgetc()函數(shù)fgetc()函數(shù)的功能是從指定的文件中讀一個字符,該字符的ASCII碼值作為函數(shù)的返回值。若讀取字符時文件已經(jīng)結(jié)束或出錯,fgetc()函數(shù)返回文件結(jié)束標(biāo)記EOF,此時EOF的值為-1。一般格式如下:字符變量=fgetc(文件指針);例如,ch=fgetc(fp);,表示從打開的文件fp中讀取一個字符并送入ch中。6.格式化讀寫fscanf()函數(shù)和fprintf()函數(shù)fscanf()函數(shù)和fprintf()函數(shù)與前面使用的scanf()函數(shù)和printf()函數(shù)的功能相似,都是格式化讀寫函數(shù)。兩者區(qū)別在于fscanf()函數(shù)和fprintf()函數(shù)的讀寫對象不是鍵盤和顯示器,而是磁盤文件。一般格式如下:fscanf(文件指針,格式字符串,輸入列表);fprintf(文件指針,格式字符串,輸出列表);例如,fscanf(fp,"%d%s",&i,s);fprintf((fp,"%d%c",j,ch);9.1.4文件定位所謂文件位置指針,是系統(tǒng)設(shè)置的用來指向文件當(dāng)前讀寫位置的指針,不需用戶定義,但會隨著文件的讀寫操作而移動,因此,在對文件進(jìn)行操作前,需先清楚當(dāng)前文件位置指針的位置,在不同位置進(jìn)行操作時,也需將文件位置指針定位在相應(yīng)位置。在C語言中,可以使用文件定位函數(shù)將文件位置指針定位在所要讀寫的任意位置,這些函數(shù)皆包含在頭文件“stdio.h”中。1.rewind()函數(shù)rewind()函數(shù)的功能是將文件位置指針移至文件起始處。一般格式如下:rewind(fp);其中,fp為由fopen()函數(shù)打開的文件指針。2.fseek()函數(shù)fseek()函數(shù)用于將文件位置指針移到指定位置。一般格式如下:fseek(fp,位移量,起始點(diǎn));其中,fp是文件指針,指向被移動的文件;位移量是移動的字節(jié)數(shù),要求位移量是long型數(shù)據(jù),位移量可正可負(fù)。位移量為正數(shù)時,位置指針向文件尾方向移動,位移量為負(fù)數(shù)時,位置指針向文件頭方向移動。起始點(diǎn)是位移量的參考點(diǎn),有三種取值:0代表文件開始位置,1代表當(dāng)前位置,2代表文件尾位置。例如,fseek(fp,50L,0);,表示以文件開頭為基準(zhǔn),文件位置指針向文件尾方向移動50字節(jié)。3.ftell()函數(shù)ftell()函數(shù)用于尋找位置指針的當(dāng)前位置。一般格式如下:longn;n=ftell(fp);返回值為文件位置指針當(dāng)前位置相對于文件開始的偏移字節(jié)數(shù),若函數(shù)調(diào)用出錯,則返回-1。4.feof()函數(shù)feof()函數(shù)用于判斷文件位置指針是否在文件結(jié)束位置。一般格式如下:feof(fp);當(dāng)文件位置指針在文件末尾時,返回值為1,否則返回值為0。5.ferror()函數(shù)大多數(shù)輸入/輸出函數(shù)不具有明確的出錯信息返回,在調(diào)用各種輸入/輸出函數(shù)時,若出現(xiàn)了錯誤,除了函數(shù)返回值有所反映外,還可用ferror()函數(shù)檢查。一般格式如下:ferror(fp);其中,fp為指向當(dāng)前文件的指針。在使用各種輸入/輸出函數(shù)進(jìn)行讀寫時是否出錯,若出錯,返回值為1,否則返回0。6.clearerr()函數(shù)clearerr()函數(shù)使文件錯誤標(biāo)志和文件結(jié)束標(biāo)志置為0。假設(shè)在調(diào)用一個輸入/輸出函數(shù)時出現(xiàn)錯誤,ferror()函數(shù)值為一個非零值。在調(diào)用clearerr(fp)后,ferror(fp)的值變?yōu)?。只要出現(xiàn)錯誤標(biāo)志,就一直保留,直到對同一文件調(diào)用clearerr()函數(shù)或rewind()函數(shù),或任何其他一個輸入/輸出函數(shù)。一般格式如下:clearerr(文件指針);9.2常見錯誤分析9.2.1文件操作要素不全文件操作三要素為打開、打開判斷和關(guān)閉,初學(xué)者通常容易忘記判斷打開是否成功或關(guān)閉文件,而且由于這類錯誤在程序編譯及鏈接時并不報錯,很容易被忽略。因此,在編寫文件操作程序時可先把三要素寫好,然后再添加其他操作程序段。9.2.2打開方式有誤要注意打開方式的差別,只寫方式為只可寫不可讀,只讀方式為只可讀不可寫。另外,寫方式會新建文件,若想保留原文件內(nèi)容,則應(yīng)選擇追加方式,否則原內(nèi)容會丟失。9.2.3文件位置指針混亂編程時應(yīng)了解當(dāng)前文件位置指針的位置,如需要從文件開始進(jìn)行操作,應(yīng)保證此時位置指針在文件的開始處,或用rewind()函數(shù)將指針強(qiáng)制定位。如果不了解當(dāng)前文件位置指針的位置,可用ftell()函數(shù)查找,然后再進(jìn)行合適的定位。9.3文件綜合應(yīng)用實(shí)戰(zhàn)9.3.1實(shí)戰(zhàn)背景《中國詩詞大會》(ChinesePoetryConference)是央視首檔全民參與的詩詞節(jié)目,節(jié)目以“賞中華詩詞、尋文化基因、品生活之美”為基本宗旨,力求通過對詩詞知識的比拼及賞析,帶動全民重溫那些曾經(jīng)學(xué)過的古詩詞,分享詩詞之美,感受詩詞之趣,從古人的智慧和情懷中汲取營養(yǎng),涵養(yǎng)心靈。截至2022年5月3日,《中國詩詞大會》已經(jīng)播出六季。節(jié)目中的選手來自各行各業(yè),有用唱歌的方式教學(xué)生背詩的中學(xué)教師,也有用廣東話朗誦詩詞的圖書編輯,有喜歡玩游戲的日語專業(yè)的大學(xué)生,也有失去了雙臂的法律系大學(xué)生,有熱愛詩詞的警察,還有年輕的情侶一起來參賽的。《中國詩詞大會》帶動了全民學(xué)習(xí)、誦讀古詩詞的浪潮。9.3.2實(shí)戰(zhàn)目的(1)掌握用fopen()函數(shù)打開文件的操作。(2)掌握用fgetc()函數(shù)、fputc()函數(shù)、fgets()函數(shù)、fputs()函數(shù)、fscanf()函數(shù)和fprintf()函數(shù)等不同的方式,在屏幕上顯示文件的內(nèi)容。9.3.3實(shí)戰(zhàn)內(nèi)容《中國詩詞大會》是繼《中國漢字聽寫大會》《中國成語大會》《中國謎語大會》之后,由央視科教頻道推出的一檔文化類演播室益智競賽節(jié)目。(1)將上面的文字內(nèi)容,用文件名“中國詩詞大會.txt”存放在計算機(jī)的D盤上。(2)用fopen()函數(shù)打開“中國詩詞大會.txt”文件。(3)在屏幕顯示“中國詩詞大會.txt”內(nèi)容。9.3.4實(shí)戰(zhàn)過程#include<stdio.h>#include<stdlib.h>intmain(){ FILE*fp; charch,str1[100],str2[100]; if((fp=fopen("d:\\中國詩詞大會.txt","r"))==NULL) { printf("文件讀取失??!"); exit(0); /*退出程序*/ } ch=fgetc(fp); while(ch!=EOF) { putchar(ch); ch=fgetc(fp); } fclose(fp); printf("\n\n"); if((fp=fopen("d:\\中國詩詞大會.txt","rt"))==NULL) { printf("文件讀取失??!"); exit(0); /*退出程序*/ } while(!feof(fp)) { fgets(str1,100,fp); printf("%s",str1); } fclose(fp); printf("\n\n"); if((fp=fopen("d:\\中國詩詞大會.txt","rt"))==NULL) { printf("文件讀取失??!"); exit(0); /*退出程序*/ } while(!feof(fp)) { fscanf(fp,"%s",str2); printf("%s",str2); } fclose(fp); printf("\n\n"); return0;}9.3.5實(shí)戰(zhàn)意義通過實(shí)戰(zhàn),學(xué)習(xí)文本文件輸入輸出的同時,了解、熟悉《中國詩詞大會》舉辦的目的和意義?!吨?/p>
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度婚姻介紹所涉外婚姻服務(wù)合同
- 二零二五餐飲業(yè)商鋪?zhàn)赓U合同附贈會員管理系統(tǒng)合作
- 2025年宜賓貨運(yùn)從業(yè)資格考題
- 村支部書記發(fā)言稿
- 殘聯(lián)疫情發(fā)言稿
- 吉安市房屋租賃合同
- 藝術(shù)設(shè)計現(xiàn)代藝術(shù)理論題詳解
- 廚房發(fā)言稿200字
- 醫(yī)療設(shè)備采購合同協(xié)議書
- 軟件行業(yè)軟件開發(fā)作業(yè)指導(dǎo)書
- 熱化學(xué)儲熱耦合高溫相變儲熱多物理場協(xié)同調(diào)控機(jī)理
- 老舊風(fēng)電機(jī)組葉片回收調(diào)研分析報告
- 第26課《詩詞五首》作業(yè)設(shè)計統(tǒng)編版語文八年級上冊
- 內(nèi)分泌科護(hù)理常規(guī)的課件
- 氣管切開患者的管理和康復(fù)治療推薦意見(新版)解讀
- 疼痛科營銷方案
- 中醫(yī)藥在關(guān)節(jié)病變治療中的價值
- 《香水知識》課件
- 公務(wù)員獎勵審批表(表格)
- 醫(yī)院污水處理站維保服務(wù)項(xiàng)目
- 裝修項(xiàng)目經(jīng)理的簡歷樣板
評論
0/150
提交評論