版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、C程序設(shè)計講課設(shè)計(第10章第1次課)C程序設(shè)計講課設(shè)計(第10章第1次課)7/7C程序設(shè)計講課設(shè)計(第10章第1次課)周次:第周課次:第一課講課時間:年代日一、章節(jié)內(nèi)容:第10章文件、講課目的:經(jīng)過本章的學(xué)習(xí),要求能理解文本文件和二進(jìn)制文件的見解,能嫻熟使用文件的讀寫函數(shù)對文件進(jìn)行一系列的操作,理解文件的定位和文件的犯錯檢測等,能夠利用本章的知識點進(jìn)行一些簡單的課程設(shè)計,為后續(xù)課程中系統(tǒng)的開發(fā)確立基礎(chǔ)。三、講課要點:掌握文件的翻開與封閉;掌握文件的讀寫;掌握文件的定位。、講課難點:掌握文件的讀寫。掌握文件的犯錯檢測五、講課方法和講課手段多媒體教室,電子課件。六、講課過程:)預(yù)備(復(fù)習(xí)):位運(yùn)
2、算。(5分鐘)二)課前發(fā)問(5分鐘)三)課程引入:Windows文件的見解,文本文件,二進(jìn)制文件等。(10分鐘)四)課程新授:(60分鐘)10.1文件操作的C程序?qū)嵗募僮饕骸纠?0.1】編寫程序完成:將一個班級學(xué)生的期末考試信息(學(xué)號、姓名、總分)存入磁盤文件stu.txt中,同時統(tǒng)計總分在550分以上的優(yōu)異學(xué)生信息,并將優(yōu)異學(xué)生的名單輸出到屏幕上。幾個跟文件有關(guān)得見解:文件是一組有關(guān)數(shù)據(jù)的會合。在C程序設(shè)計中,按文件的內(nèi)容能夠分為兩類:一類是程序言件,它是程序得源代碼;另一類是數(shù)據(jù)文件,它是程序運(yùn)轉(zhuǎn)時需要的原始數(shù)據(jù)及輸出的結(jié)果。這兩類文件都保留在磁盤上,隨時能夠使用。程序言件的創(chuàng)立和
3、使用已經(jīng)在前面各章使用了,本章主要介紹數(shù)據(jù)文件的創(chuàng)立和使用。按數(shù)據(jù)得儲蓄形式,數(shù)據(jù)文件能夠分為文本文件和二進(jìn)制文件兩類。文本文件:也稱ASCII文件,是一種字符流文件。文本文件的長處是能夠直接閱讀,并且ASCII碼標(biāo)準(zhǔn)一致,使文件易于移植,但其弊端是輸入、輸出都要進(jìn)行變換,效率低。二進(jìn)制文件:二進(jìn)制文件中的數(shù)據(jù)是按其在內(nèi)存中的儲蓄形式寄存的。流:流是一個邏輯設(shè)施,其擁有諸多同樣的行為。在C語言中有兩種性質(zhì)的流:文字流和二進(jìn)制。次序言件:能夠進(jìn)行次序存取的文件稱為次序言件。隨機(jī)文件:能夠進(jìn)行隨機(jī)存取的文件稱為隨機(jī)文件。C語言支持的文件存取方式有兩種:次序存取和隨機(jī)存取。隨機(jī)存取也稱直接存取。10
4、.2文件的翻開與封閉因為文件的翻開與封閉都是利用系統(tǒng)函數(shù)來實現(xiàn)的,所以,在編寫有關(guān)文件的程序中,應(yīng)當(dāng)在此中包括“stdio.h”頭文件。文件的翻開文件翻開函數(shù)fopen用來翻開一個文件,其調(diào)用的一般形式為:文件指針名=fopen(文件名,使用文件方式);此中:“文件指針名”必然是被說明為FILE種類的指針變量;“文件名”是被翻開文件的文件名;文件名平常是文件變量或文件數(shù)組;“使用文件方式”是指文件的種類和操作要求。文件的封閉文件一旦使用完成,應(yīng)使用封閉文件函數(shù)fclose把文件封閉,以防備文件數(shù)據(jù)拋棄等狀況的發(fā)生。fclose函數(shù)調(diào)用的一般形式為:fclose(FILE*fp);此中,參數(shù)fp
5、是文件型指針,經(jīng)過fopen()函數(shù)已經(jīng)獲取,它指向某個翻開的文件。比方:fclose(fp);上述語句的含義是封閉fp所指向的文件,同時自動開釋分派給文件的內(nèi)存緩沖區(qū)。當(dāng)正常完成封閉文件的操作時,fclose函數(shù)的返回值為0,表示已正確封閉指定的文件;如返回非零值則表示有錯誤發(fā)生。10.3文件的讀寫文件的讀寫操作由文件讀寫函數(shù)完成,常用的讀寫函數(shù)有fputc、fgetc、fread、fwrite、fputs、fgets、fprintf、fscanf、putw、getw等。字符讀寫函數(shù)1.讀字符函數(shù)fgetc函數(shù)fgetc函數(shù)用來從指定的文件讀入一個字符,該文件必然是讀或?qū)懛绞椒_的。fget
6、c函數(shù)的調(diào)用格式以下:ch=fgetc(fp);此中fp為文件種類指針,ch為字符變量。fgetc函數(shù)返回的字符賦給字符變量ch。假如在履行fgetc函數(shù)讀字符時碰到文件結(jié)束符,則該函數(shù)返回一個結(jié)束標(biāo)記EOF(-1)。假如想從磁盤文件次序讀入字符并在屏幕上顯示出來,能夠用以下的程序段:ch=fgetc(fp);22while(ch!=EOF)putchar(ch);ch=fgetc(fp);2.寫字符函數(shù)fputc函數(shù)fputc函數(shù)用來將一個字符寫入指定的文件中,該函數(shù)的調(diào)用格式為:fputc(ch,fp);此中ch能夠是一個字符常量,也能夠是一個字符變量。fp是文件指針變量。該函數(shù)的作用是將
7、字符(ch的值)輸出到fp所指定的文件中去。fputc函數(shù)也帶回一個值,假如輸出成功,則返回值就是輸出的字符,假如輸出失敗,則返回EOF(-1)。數(shù)據(jù)讀寫函數(shù)1.寫數(shù)據(jù)函數(shù)fwrite函數(shù)寫數(shù)據(jù)塊函數(shù)調(diào)用的一般形式為:fwrite(buffer,size,n,fp);此中各個參數(shù)的含義及說明如表10-4所示。表10-4fwrite函數(shù)中各個參數(shù)的含義及說明參數(shù)buffersizenfp含義說明是一個字符型指針,它表示寄存輸出數(shù)據(jù)的變量地點或數(shù)組首地點。是一個無符號整型,表示數(shù)據(jù)塊的字節(jié)數(shù)無符號整型,表示要讀寫的數(shù)據(jù)塊塊數(shù)每個數(shù)據(jù)是size個字節(jié)表示文件指針2.讀數(shù)據(jù)函數(shù)fread函數(shù)讀數(shù)據(jù)塊函
8、數(shù)調(diào)用的一般形式為:fread(buffer,size,n,fp);此中的buffer是一個字符型指針,表示寄存讀入數(shù)據(jù)的變量地點或數(shù)組首地點。size、n、fp的含義見表10-4。比方:fread(a,4,8,fp);上述語句的含義是從fp所指的文件中,每次讀4個字節(jié),也就是把一個實數(shù)送入實數(shù)組a中,連續(xù)讀8次,即讀入8個實數(shù)并送到數(shù)組a中。字符串讀寫函數(shù)字符串讀寫函數(shù)辦理的文件種類主假如文本文件,也分為讀字符串函數(shù)和寫字符串函數(shù)。1.寫字符串函數(shù)fputs33fputs函數(shù)的功能是向指定的文件寫入一個字符串,其調(diào)用形式為:fputs(字符串,文件指針);字符串能夠是字符串常量,也能夠是字符
9、數(shù)組名,或指針變量,比方:fputs(Human,fp);上述語句的含義是把字符串“Human”寫入fp所指的文件之中。2.讀字符串函數(shù)fgetsfgets函數(shù)的功能是從指定的文件中讀一個字符串到字符數(shù)組中,其調(diào)用形式為:fgets(str,n,fp);函數(shù)中的參數(shù)str是字符數(shù)組名;n是一個正整數(shù),表示從文件中讀出的字符串不超出n-1個字符。在向字符數(shù)組讀入的最后一個字符后加上字符串結(jié)束標(biāo)記0。假如在讀n-1個字符從前碰到換行符或EOF,讀入工作也結(jié)束。比方:fgets(ch,50,fp);上述語句的含義是從fp所指的文件中讀出49個字符送入字符數(shù)組ch中。格式化讀寫函數(shù)文件的格式化讀寫函數(shù)
10、和從前學(xué)習(xí)的格式化輸入/輸出函數(shù)很近似,關(guān)于格式化輸入/輸出函數(shù),只好和標(biāo)準(zhǔn)輸入/輸出設(shè)施文件打交道;而有了格式化的讀寫函數(shù)今后,不單能夠辦理標(biāo)準(zhǔn)設(shè)施的輸入/輸出,并且能夠辦理磁盤文件中的數(shù)據(jù)。1.格式化寫函數(shù)fprintf格式化寫函數(shù)fprintf的調(diào)用格式為:fprintf(文件指針,格式字符串,輸出列表);比方:fprintf(fp,%d%c,j,ch);上述語句的作用是將整型變量j和字符型變量ch的值按%d和%c的格式輸出到fp指向的文件上。2.格式化讀函數(shù)fscanf格式化寫函數(shù)fscanf的調(diào)用格式為:fscanf(文件指針,格式字符串,輸入列表);比方:fscanf(fp,%d%
11、s,&i,str);若此時fp所指的文件中寄存著以下的數(shù)據(jù):6happnewyear上述語句的作用是將6賦給整型變量i,將“happynewyear”賦給字符型數(shù)組str。其余讀寫函數(shù)除了上邊介紹的讀寫函數(shù)外,大多數(shù)的C語言編譯系統(tǒng)還供給了對磁盤文件讀寫一個字(整數(shù))的函數(shù)putw和getw但putw和getw其實不是ANSIC標(biāo)準(zhǔn)定義的函數(shù),所以假如所用的C語言編譯系統(tǒng)不供給這兩個函數(shù),能夠按以下的形式自定義這兩個函數(shù)。441.putw函數(shù)的定義putw(inti,FILE*fp)char*s;s=&i;putc(s0,fp);puts(s1,fp);return(i);2.getw函數(shù)的定
12、義getw(FILE*fp)char*s;inti;s=&i;s0=getc(fp);s1=getc(fp);return(i);比方:putw(200,fp);上述語句的功能是將整數(shù)200輸出到fp所指向的文件中。10.4文件的定位前面介紹的對文件的讀寫方式都是次序讀寫,也就是讀寫文件只好從頭開始,次序讀寫各個數(shù)據(jù)。但在實詰問題中經(jīng)常要求只讀寫文件中某一指定的部分。為認(rèn)識決這個問題,C語言引入了隨機(jī)讀寫的見解。所謂“隨機(jī)讀寫”是將文件內(nèi)部的地點指針挪動到需要讀寫的地點后再進(jìn)行讀寫,這類讀寫稱為隨機(jī)讀寫。實現(xiàn)隨機(jī)讀寫的要點是按要求挪動地點指針,這稱為文件的“定位”。挪動文件內(nèi)部地點指針的函數(shù)主
13、要有兩個,即rewind函數(shù)和fseek函數(shù)。文件頭定位函數(shù)當(dāng)讀取了文件中若干個數(shù)據(jù)后,又要從頭讀取數(shù)據(jù),這時就需要將文件內(nèi)部指針從頭指向文件頭,C語言供給的文件頭定位函數(shù)rewind就能夠?qū)⑽募羔槒念^指定到文件頭。該函數(shù)的調(diào)用格式為:rewind(文件指針);其功能是把文件內(nèi)部的地點指針移到文件開頭,假如定位成功,返回0;不然,返回非0。文件隨機(jī)定位函數(shù)前面學(xué)習(xí)的文件讀寫函數(shù)主假如用來讀寫次序言件的。比方:假如要讀取文件中的第6個數(shù)據(jù),則翻開文件后必然先讀取前5個數(shù)據(jù)后,在讀取1個數(shù)據(jù)才是所需要的數(shù)據(jù)。而文件隨機(jī)定位函數(shù)能夠使文件內(nèi)部地點指針直接指向第6個數(shù)據(jù),在讀取目前一個數(shù)據(jù)就能夠。f
14、seek函數(shù)用來挪動文件內(nèi)部地點指針,其調(diào)用形式為:55fseek(文件指針,位移量,初步點);流式文件的定位函數(shù)用ftell()函數(shù)能夠返回文件指針的目前地點。其調(diào)用格式為:ftell(fp);該函數(shù)的返回值為長整型數(shù),表示有關(guān)于文件頭的字節(jié)數(shù),犯錯時返回-1L。比方:longi;if(i=ftell(fp)=-1L)printf(Afileerrorhasoccurredat%ld.n,i);上述程序段能夠通知用戶在文件的什么地點出現(xiàn)了文件錯誤。判斷文件結(jié)束函數(shù)feof10.5文件的犯錯檢測C標(biāo)準(zhǔn)供給了ferror和clearerr等一些函數(shù)用來檢測輸入/輸出函數(shù)調(diào)用中的錯誤。ferror
15、函數(shù)在調(diào)用各樣輸入/輸出函數(shù)時,除了函數(shù)自己的返回值能夠判斷調(diào)用能否犯錯外,還能夠用ferror函數(shù)進(jìn)行測試。ferror函數(shù)的調(diào)用格式為:ferror(fp);此中fp是指向文件的指針,當(dāng)ferror函數(shù)的返回值為非零時,表示犯錯;當(dāng)返回值為零時,表示沒有發(fā)生錯誤。需要讀者注意的是,ferror函數(shù)關(guān)于同一個文件,在每次調(diào)用輸入/輸出函數(shù)時,均產(chǎn)生一個新的ferror函數(shù)值。所以最好是每次調(diào)用輸入/輸出函數(shù)時立刻檢查ferror函數(shù)值,以防備信息的拋棄。其余,在履行fopen函數(shù)時,ferror函數(shù)的初始值自動置0。clearerr函數(shù)clearerr函數(shù)的功能是使文件錯誤標(biāo)記和結(jié)束標(biāo)記置零
16、。其調(diào)用格式為:clearerr(fp);此中的fp為文件指針。比方:在調(diào)用一個輸入/輸出函數(shù)犯錯時,ferror函數(shù)返回了非零值。比方:clearerr(fp);在履行上述語句后,ferror(fp)的返回值變?yōu)榱肆恪N?課程小結(jié)(10分鐘)因為文件的翻開與封閉都是利用系統(tǒng)函數(shù)來實現(xiàn)的,所以,在編寫有關(guān)文件的程序中,應(yīng)當(dāng)在此中包括“stdio.h”頭文件。文件翻開函數(shù)fopen用來翻開一個文件,文件一旦使用完成,應(yīng)使用封閉文件函數(shù)fclose把文件封閉,以防備文件數(shù)據(jù)拋棄等狀況的發(fā)生。fgetc函數(shù)用來從指定的文件讀入一個字符,fputc函數(shù)用來將一個字符寫入指定的文件中;寫數(shù)據(jù)函數(shù)fwrite函數(shù),讀數(shù)據(jù)函數(shù)fread函數(shù);寫字符
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年二手車買賣合同協(xié)議
- 房產(chǎn)證購房合同格式
- 新式勞務(wù)合同范例模板
- 2024裝修工程結(jié)算協(xié)議
- 出租車公司車輛轉(zhuǎn)讓合同樣本
- 股權(quán)激勵合同范本
- 技術(shù)開發(fā)保密合同樣本
- 小區(qū)環(huán)境整治施工合同
- 就業(yè)安置協(xié)議書撰寫心得
- 合伙協(xié)議退出機(jī)制詳解
- JGT366-2012 外墻保溫用錨栓
- 網(wǎng)球運(yùn)動損傷與預(yù)防
- 病理性咬指甲的心理動力學(xué)分析
- 江蘇省揚(yáng)州市寶應(yīng)縣2023-2024學(xué)年八年級上學(xué)期期中英語試題(含聽力)( 含答案解析 )
- 火龍罐綜合灸療法
- 2022年GOLD慢阻肺診治指南
- 登金陵鳳凰臺-李白
- 第4章-動車組列車餐飲服務(wù)操作技能《高速鐵路列車餐飲服務(wù)》
- 安徽省宿州市碭山縣2023-2024學(xué)年九年級上學(xué)期12月質(zhì)量調(diào)研語文試題(含答案)
- 高教社新國規(guī)中職教材《英語1基礎(chǔ)模塊》英語1-U1-220905改
- 大學(xué)生婚戀觀調(diào)查問卷
評論
0/150
提交評論