常州信息學(xué)院C語言課程組_第1頁(yè)
常州信息學(xué)院C語言課程組_第2頁(yè)
常州信息學(xué)院C語言課程組_第3頁(yè)
常州信息學(xué)院C語言課程組_第4頁(yè)
常州信息學(xué)院C語言課程組_第5頁(yè)
已閱讀5頁(yè),還剩46頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第12章文件

本章主要任務(wù):

1、文件基本術(shù)語。

2、文件指針文件打開/關(guān)閉。

3、文件讀寫,文件定位。常州信息學(xué)院C語言課程組文件

文件: 存儲(chǔ)在外部介質(zhì)上一組相關(guān)數(shù)據(jù)的集合。例如,

程序文件就是程序代碼的集合;數(shù)據(jù)文件是數(shù)據(jù)的集合。

常州信息學(xué)院C語言課程組文件名 文件名: 操作系統(tǒng)以文件為單位對(duì)數(shù)據(jù)進(jìn)行管理,每個(gè)文件有一個(gè)名稱,文件名是文件的標(biāo)識(shí),操作系統(tǒng)通過文件名訪問文件。例如,通過文件名查找,打開文件,然后讀取或?qū)懭霐?shù)據(jù)。

常州信息學(xué)院C語言課程組磁盤文件、設(shè)備文件

磁盤文件: 文件一般保存在磁介質(zhì)(如軟盤、硬盤)上,所以稱為磁盤文件。

設(shè)備文件: 操作系統(tǒng)還經(jīng)常將與主機(jī)相連接的I/O設(shè)備(如鍵盤-輸入文件、顯示器、打印機(jī)-輸出文件)也看作為文件,即設(shè)備文件。

常州信息學(xué)院C語言課程組ASCII文件ASCII文件(文本文件): 每個(gè)字節(jié)存放一個(gè)ASCII碼,代表一個(gè)字符。ASCII文件可以閱讀,可以打印,但是它與內(nèi)存數(shù)據(jù)交換時(shí)需要轉(zhuǎn)換。

常州信息學(xué)院C語言課程組二進(jìn)制文件二進(jìn)制文件: 將內(nèi)存中的數(shù)據(jù)按照其在內(nèi)存中的存儲(chǔ)形式原樣輸出、并保存在文件中。二進(jìn)制文件占用空間少,內(nèi)存數(shù)據(jù)和磁盤數(shù)據(jù)交換時(shí)無須轉(zhuǎn)換,但是二進(jìn)制文件不可閱讀、打印。

常州信息學(xué)院C語言課程組文件類型指針

文件類型(結(jié)構(gòu)體)-FILE類型.FILE類型是一種結(jié)構(gòu)體類型,在stdio.h中定義,用于存放文件的當(dāng)前的有關(guān)信息。 程序使用一個(gè)文件,系統(tǒng)就為此文件開辟一個(gè)FILE類型變量。程序使用幾個(gè)文件,系統(tǒng)就開辟幾個(gè)FILE類型變量,存放各個(gè)文件的相關(guān)信息。

常州信息學(xué)院C語言課程組FILE常州信息學(xué)院C語言課程組文件指針變量(文件指針)

通常對(duì)FILE結(jié)構(gòu)體的訪問是通過FILE類型指針變量(簡(jiǎn)稱:文件指針)完成,文件指針變量指向文件類型變量,簡(jiǎn)單地說,文件指針指向文件。

事實(shí)上只需要使用文件指針完成文件的操作,根本不必關(guān)心文件類型變量的內(nèi)容。在打開一個(gè)文件后,系統(tǒng)開辟一個(gè)文件變量并返回此文件的文件指針;將此文件指針保存在一個(gè)文件指針變量中,以后所有對(duì)文件的操作都通過此文件指針變量完成;直到關(guān)閉文件,文件指針指向的文件類型變量釋放。

常州信息學(xué)院C語言課程組常州信息學(xué)院C語言課程組文件的打開(fopen函數(shù))

文件的打開后才能進(jìn)行操作,文件打開通過調(diào)用fopen函數(shù)實(shí)現(xiàn)。 調(diào)用fopen的格式是:

FILE*fp;

fp=fopen(文件名,打開方式或使用方式);

常州信息學(xué)院C語言課程組文件打開舉例例如:FILE*fp;fp=fopen(“d:\\a1.txt”,“r”);常州信息學(xué)院C語言課程組說明

1、打開d:盤根目錄下文件名為a1.txt的文件,打開方式“r”表示只讀。

2、fopen函數(shù)返回指向d:\a1.txt的文件指針,然后賦值給fp,fp->此文件,即fp與此文件關(guān)聯(lián)。

3、關(guān)于文件名要注意:文件名包含文件名.擴(kuò)展名;路徑要用“\\”表示。

常州信息學(xué)院C語言課程組說明4、關(guān)于打開方式:

(1)“r,w,a”:讀、寫、添加

(2)“b,t”:二進(jìn)制,文本文件。默認(rèn)為文本方式,即沒有b就是以文本方式打開文件。 (3)“+”:可讀寫

常州信息學(xué)院C語言課程組文件打開方式(使用方式)的說明

1、文件打開一定要檢查fopen函數(shù)的返回值。因?yàn)橛锌赡芪募荒苷4蜷_。不能正常打開時(shí)fopen函數(shù)返回NULL??梢杂孟旅娴男问綑z查:

if((fp=fopen(...))==NULL) {

printf(“erroropenfile\n”);exit(1); }

常州信息學(xué)院C語言課程組文件打開方式(使用方式)的說明2、“r”方式:只能從文件讀入數(shù)據(jù)而不能向文件寫入數(shù)據(jù)。該方式要求欲打開的文件已經(jīng)存在。3、“a”方式:在文件末尾添加數(shù)據(jù),而不刪除原來文件。該方式要求欲打開的文件已經(jīng)存在。

常州信息學(xué)院C語言課程組文件打開方式(使用方式)的說明4、“w”方式:只能向文件寫入數(shù)據(jù)而不能從文件讀入數(shù)據(jù)。如果文件不存在,創(chuàng)建文件,如果文件存在,原來文件被刪除,然后重新創(chuàng)建文件(相當(dāng)覆蓋原來文件)。

常州信息學(xué)院C語言課程組文件打開方式(使用方式)的說明5、“+”(“r+,w+,a+”):均為可讀、可寫。但是“r+”,“a+”要求文件已經(jīng)存在,“w+”無此要求;“r+”打開文件時(shí)文件指針指向文件開頭,“a+”打開文件時(shí)文件指針指向文件末尾。

常州信息學(xué)院C語言課程組文件打開方式(使用方式)的說明6、“b、t”:以二進(jìn)制或文本方式打開文件。默認(rèn)是文本方式,t可以省略。讀文本文件時(shí),將“回車”/“換行”轉(zhuǎn)換為一個(gè)“換行”;寫文本文件時(shí),將“換行”轉(zhuǎn)換為“回車/換行”。

常州信息學(xué)院C語言課程組文件打開方式(使用方式)的說明7、程序開始運(yùn)行時(shí),系統(tǒng)自動(dòng)打開三個(gè)標(biāo)準(zhǔn)文件:標(biāo)準(zhǔn)輸入,標(biāo)準(zhǔn)輸出,標(biāo)準(zhǔn)出錯(cuò)輸出。一般這三個(gè)文件對(duì)應(yīng)于終端(鍵盤、顯示器)。這三個(gè)文件不需要手工打開,就可以使用。標(biāo)準(zhǔn)文件:標(biāo)準(zhǔn)輸入,標(biāo)準(zhǔn)輸出,標(biāo)準(zhǔn)出錯(cuò)輸出對(duì)應(yīng)的文件指針是stdin,stdout,stderr。

常州信息學(xué)院C語言課程組文件的關(guān)閉(fclose函數(shù))

文件使用完畢后必須關(guān)閉,以避免數(shù)據(jù)丟失。 格式:

fclose(文件指針);

常州信息學(xué)院C語言課程組常用的文件讀寫函數(shù)

常州信息學(xué)院C語言課程組寫一個(gè)字符到磁盤文件

格式:fputc(ch,fp)功能:將字符ch(可以是字符表達(dá)式,字符常量、變量等)寫入fp所指向的文件。返回:輸出成功返回值-輸出的字符ch;輸出失敗-返回EOF(-1)。其它說明:每次寫入一個(gè)字符,文件位置指針自動(dòng)指向下一個(gè)字節(jié)。

常州信息學(xué)院C語言課程組應(yīng)用舉例例12-1: 從鍵盤輸入一行字符,寫入到文本文件string.txt中。(P.206)

常州信息學(xué)院C語言課程組常州信息學(xué)院C語言課程組從磁盤文件讀一個(gè)字符

格式:ch=fgetc(fp)功能:從fp所指向的文件讀一個(gè)字符,字符由函數(shù)返回。返回的字符可以賦值給ch,也可以直接參與表達(dá)式運(yùn)算。返回:輸入成功返回值-輸入的字符;遇到文件結(jié)束-返回EOF(-1)

常州信息學(xué)院C語言課程組從磁盤文件讀一個(gè)字符串

格式:char*fgets(char*str,intn,FILE*fp)l

功能:從fp所指向的文件讀n-1個(gè)字符,并將這些字符放到以str為起始地址的單元中。如果在讀入n-1個(gè)字符結(jié)束前遇到換行符或EOF,讀入結(jié)束。字符串讀入后最后加一個(gè)‘\0’字符。 返回:輸入成功返回值-輸入串的首地址;遇到文件結(jié)束或出錯(cuò)-返回NULL。

常州信息學(xué)院C語言課程組應(yīng)用舉例例12-3: 編制一個(gè)將文本文件中全部信息顯示到屏幕的程序(類似于dos的type命令,P.210)。使用fgets的例子。

常州信息學(xué)院C語言課程組常州信息學(xué)院C語言課程組寫一個(gè)字符串到磁盤文件

格式:fputs(char*str,FILE*fp)L 功能:向fp所指向的文件寫入以str為首地址的字符串。 返回:輸入成功返回值-0;出錯(cuò)-返回非0值。

常州信息學(xué)院C語言課程組應(yīng)用舉例例12-4: 在文本文件string.txt末尾添加若干行字符(P.210)。使用fputs的例子。

常州信息學(xué)院C語言課程組常州信息學(xué)院C語言課程組數(shù)據(jù)塊讀寫函數(shù)(一般用于二進(jìn)制文件讀寫)

從文件(特別是二進(jìn)制文件)讀寫一塊數(shù)據(jù)(如一個(gè)數(shù)組元素,一個(gè)結(jié)構(gòu)體變量的數(shù)據(jù)-記錄)使用數(shù)據(jù)塊讀寫函數(shù)非常方便。數(shù)據(jù)塊讀寫函數(shù)的調(diào)用形式為:int

fread(void*buffer,int

size,intcount,FILE*fp);

int

fwrite(void*buffer,int

size,intcount,FILE*fp);

常州信息學(xué)院C語言課程組參數(shù)說明(1)buffer是指針,對(duì)fread用于存放讀入數(shù)據(jù)的首地址;對(duì)fwrite是要輸出數(shù)據(jù)的首地址。(2)size是一個(gè)數(shù)據(jù)塊的字節(jié)數(shù)(每塊大小),count是要讀寫的數(shù)據(jù)塊塊數(shù)。(3)fp文件指針(4)fread、fwrite返回讀取/寫入的數(shù)據(jù)塊塊數(shù)。(正常情況=count)(5)以數(shù)據(jù)塊方式讀寫,文件通常以二進(jìn)制方式打開。

常州信息學(xué)院C語言課程組操作舉例例如:floatf[2];FILE*fp=fopen(“...”,”r”);fread(f,4,2,fp);/*或fread(f,sizeof(float),2,fp);*/常州信息學(xué)院C語言課程組應(yīng)用舉例例12-5: 從鍵盤輸入一批學(xué)生的數(shù)據(jù),然后把它們轉(zhuǎn)存到磁盤文件stud.dat中。P.211.

常州信息學(xué)院C語言課程組常州信息學(xué)院C語言課程組常州信息學(xué)院C語言課程組文件的定位

對(duì)文件的讀寫可以順序讀寫,也可以隨機(jī)讀寫。1、文件順序讀寫:從文件的開頭開始,依次讀寫數(shù)據(jù)。(從文件開頭讀寫直到文件尾部)2、文件隨機(jī)讀寫(文件定位讀寫):從文件的指定位置讀寫數(shù)據(jù)。3、文件位置指針:在文件的讀寫過程中,文件位置指針指出了文件的當(dāng)前讀寫位置(實(shí)際上是:下一步讀寫位置),每次讀寫后,文件位置指針自動(dòng)更新指向新的讀寫位置(實(shí)際上是:下一步讀寫位置)。 注意區(qū)分:文件位置指針,文件指針。

常州信息學(xué)院C語言課程組文件位置指針函數(shù)

rewind 重返文件頭函數(shù)

fseek

位置指針移動(dòng)函數(shù)

ftell

獲取當(dāng)前位置指針函數(shù)

常州信息學(xué)院C語言課程組示意圖常州信息學(xué)院C語言課程組rewind-重返文件頭函

功能:使文件位置指針重返文件的開頭。例12-7: 有一個(gè)文本文件,第一次使它顯示在屏幕上,第二次把它復(fù)制到另外一個(gè)文件中。

常州信息學(xué)院C語言課程組常州信息學(xué)院C語言課程組fseek-位置指針移動(dòng)函數(shù)

功能:移動(dòng)文件讀寫位置指針,以便文件的隨機(jī)讀寫。格式:fseek(FILE*fp,long

offset,intwhence);

常州信息學(xué)院C語言課程組參數(shù):常州信息學(xué)院C語言課程組舉例常州信息學(xué)院C語言課程組應(yīng)用實(shí)例例12-8: 編程讀出文件stu.dat中第三個(gè)學(xué)生的數(shù)據(jù)。(P.215)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論