計(jì)算機(jī)軟件技術(shù)基礎(chǔ) 第14章 文件.ppt_第1頁
計(jì)算機(jī)軟件技術(shù)基礎(chǔ) 第14章 文件.ppt_第2頁
計(jì)算機(jī)軟件技術(shù)基礎(chǔ) 第14章 文件.ppt_第3頁
計(jì)算機(jī)軟件技術(shù)基礎(chǔ) 第14章 文件.ppt_第4頁
計(jì)算機(jī)軟件技術(shù)基礎(chǔ) 第14章 文件.ppt_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第十四章 文件,第十四章 文件,14.1 文件的基本概念,所謂“文件”是指一組相關(guān)數(shù)據(jù)的有序集合。這個數(shù)據(jù)集有一個名稱,叫做文件名。 從不同的角度可對文件作不同的分類。從用戶的角度看,文件可分為普通文件和設(shè)備文件兩種。 普通文件是指駐留在磁盤或其它外部介質(zhì)上的一個有序數(shù)據(jù)集,可以是源文件、目標(biāo)文件、可執(zhí)行程序;也可以是一組待輸入處理的原始數(shù)據(jù),或者是一組輸出的結(jié)果。對于源文件、目標(biāo)文件、可執(zhí)行程序可以稱作程序文件,對輸入輸出數(shù)據(jù)可稱作數(shù)據(jù)文件。,第十四章 文件,設(shè)備文件是指與主機(jī)相聯(lián)的各種外部設(shè)備,如顯示器、打印機(jī)、鍵盤等。 從文件編碼的方式來看,文件可分為ASCII碼文件和二進(jìn)制碼文件兩種。

2、 ASCII文件也稱為文本文件,這種文件在磁盤中存放時每個字符對應(yīng)一個字節(jié),用于存放對應(yīng)的ASCII碼。 二進(jìn)制文件是按二進(jìn)制的編碼方式來存放文件的。,14.1 文件的基本概念,第十四章 文件,定義說明文件指針的一般形式為: FILE* 指針變量標(biāo)識符; 其中FILE應(yīng)為大寫,它實(shí)際上是由系統(tǒng)定義的一個結(jié)構(gòu)體類型,該結(jié)構(gòu)中含有文件名、文件狀態(tài)和文件當(dāng)前位置等信息。在編寫源程序時不必關(guān)心FILE結(jié)構(gòu)的細(xì)節(jié)。 如:FILE *fp; 表示fp是指向FILE結(jié)構(gòu)的指針變量,,14.2 文件類型指針,第十四章 文件,fopen函數(shù)用來打開一個文件,其調(diào)用形式: 文件指針名 = fopen(文件名,使用

3、文件方式) 其中,“文件指針名”必須是被說明為FILE 類型的指針變量,“文件名”是被打開文件的文件名。 “使用文件方式”是指文件的類型和操作要求?!拔募笔亲址A炕蜃址?dāng)?shù)組。,14.3 文件的打開與關(guān)閉 一、文件打開函數(shù)(fopen函數(shù)),第十四章 文件,如: FILE *fp; fp=(file.a,r); 在當(dāng)前目錄下打開文件file a, 只允許進(jìn)行“讀”操作,并使fp指向該文件。 又如:FILE *fpzzk; fpzzk=(c:zzk18,rb); 是打開C驅(qū)動器磁盤的根目錄下的文件zzk18,這是一個二進(jìn)制文件,只允許按二進(jìn)制方式進(jìn)行讀操作。兩個反斜線“ ”中的第一個表示

4、轉(zhuǎn)義字符,第二個表示根目錄。,14.3 文件的打開與關(guān)閉 一、文件打開函數(shù)(fopen函數(shù)),第十四章 文件,文件使用方式,14.3 文件的打開與關(guān)閉 一、文件打開函數(shù)(fopen函數(shù)),第十四章 文件,對于文件使用方式有以下幾點(diǎn)說明: (1)文件使用方式由r,w,a,t,b,六個字符拼成,各字符的含義是: r(read):讀w(write): 寫 a(append):追加:讀和寫 t(text): 文本文件,可省略不寫 b(binary): 二進(jìn)制文件 (2)凡用r打開一個文件時,該文件必須已經(jīng)存在, 且只能從該文件讀出。 (3)用w打開的文件只能向該文件寫入。 若打開的文件不存在,則以指定

5、的文件名建立該文件,若打開的文件已經(jīng)存在,則將該文件刪去,重建一個新文件。,14.3 文件的打開與關(guān)閉 一、文件打開函數(shù)(fopen函數(shù)),第十四章 文件,(4)若要向一個已存在的文件追加新的信息,只能用a 方式打開文件。但此時該文件必須是存在的,否則將會出錯。 (5)r(b) 與a(b) 的區(qū)別:使用前者打開文件時,讀/寫指針指向文件頭;使用后者時,讀/寫指針指向文件尾。 (6)在打開一個文件時,如果出錯,fopen將返回一個空指針值NULL。在程序中可以用這一信息來判別是否完成打開文件的工作,并作相應(yīng)的處理。,14.3 文件的打開與關(guān)閉 一、文件打開函數(shù)(fopen函數(shù)),第十四章 文件,

6、(7)使用文本文件向計(jì)算機(jī)系統(tǒng)輸入數(shù)據(jù)時,系統(tǒng)自動將回車換行符轉(zhuǎn)換成一個換行符;在輸出時,將換行符轉(zhuǎn)換成回車和換行兩個字符。使用二進(jìn)制文件時,內(nèi)存中的數(shù)據(jù)形式與數(shù)據(jù)文件中的形式完全一樣,因而不再進(jìn)行轉(zhuǎn)換。 (8)在程序開始運(yùn)行時,系統(tǒng)自動打開三個標(biāo)準(zhǔn)文件,并分別定義了文件指針: 標(biāo)準(zhǔn)輸入文件stdin:指向終端輸入(一般為鍵盤)。 標(biāo)準(zhǔn)輸出文件stdout:指向終端輸出(一般為顯示器)。 標(biāo)準(zhǔn)錯誤文件stderr:指向終端標(biāo)準(zhǔn)錯誤輸出(一般為顯示器)。,14.3 文件的打開與關(guān)閉 一、文件打開函數(shù)(fopen函數(shù)),第十四章 文件,所謂關(guān)閉文件,是指把(輸出)緩沖區(qū)的數(shù)據(jù)輸出到磁盤文件中,同時

7、釋放文件指針變量(即使文件指針變量不再指向該文件)。 用fclose函數(shù)關(guān)閉文件,調(diào)用形式: fclose(文件指針); 正常完成關(guān)閉文件操作時,fclose函數(shù)返回值為0。如返回非零值則表示有錯誤發(fā)生??梢杂胒error函數(shù)來測試。 如:fclose(fp); 用fopen函數(shù)打開文件時所帶回的指針賦給了fp,把該文件關(guān)閉。,14.3 文件的打開與關(guān)閉 二、文件的關(guān)閉(fclose函數(shù)),第十四章 文件,1讀文件:是指將磁盤文件中的數(shù)據(jù)傳送到計(jì)算機(jī)內(nèi)存的操作; 2寫文件:是指從計(jì)算機(jī)內(nèi)存向磁盤文件中傳送數(shù)據(jù)的操作。,14.4 文件的讀寫,第十四章 文件,1讀字符函數(shù)fgetc() 形式為:字

8、符變量=fgetc(文件指針); 功能:從指定的文件中讀一個字符 如:ch=fgetc(fp); 其意義是從打開的文件fp中讀取一個字符并送入ch中。,14.4 文件的讀寫 一、字符讀寫函數(shù)fgetc和fput,第十四章 文件,說明: (1)在fgetc函數(shù)調(diào)用中,讀取的文件必須是以讀或讀寫方式打開的。 (2)讀取字符的結(jié)果也可以不向字符變量賦值。 (3)在文件內(nèi)部有一個位置指針。用來指向文件的當(dāng)前讀寫字節(jié)。在文件打開時,該指針總是指向文件的第一個字節(jié)。使用fgetc 函數(shù)后,該位置指針將向后移動一個字節(jié)。 (4)文件指針是指向整個文件的,須在程序中定義說明,只要不重新賦值,文件指針的值是不變

9、的。文件內(nèi)部的位置指針用以指示文件內(nèi)部的當(dāng)前讀寫位置,每讀寫一次,該指針均向后移動,它不需在程序中定義說明,而是由系統(tǒng)自動設(shè)置的。,14.4 文件的讀寫 一、字符讀寫函數(shù)fgetc和fput,第十四章 文件,從一個磁盤文件順序讀入字符并在屏幕上顯示出來: ch=fgetc(fp); while (ch!=EOF) putchar(ch); ch=fgetc(fp); 順序讀入一個二進(jìn)制文件中的數(shù)據(jù): while( ! feof(fp) ) c=fgetc(fp); ,14.4 文件的讀寫 一、字符讀寫函數(shù)fgetc和fput,第十四章 文件,2寫字符函數(shù)fputc() 形式: fputc(字符

10、量,文件指針); 功能:把一個字符寫入指定的文件中。 其中,待寫入的字符量可以是字符常量或變量。 如:fputc(a,fp); 其意義是把字a寫入fp所指向的文件中。,14.4 文件的讀寫 一、字符讀寫函數(shù)fgetc和fput,第十四章 文件,說明: (1)被寫入的文件可以用讀、寫、讀寫,追加方式打開,用寫或讀寫方式打開一個已存在的文件時將清除原有的文件內(nèi)容,寫入字符從文件首開始。如需保留原有文件內(nèi)容,希望寫入的字符以文件末開始存放,必須以追加方式打開文件。被寫入的文件若不存在,則創(chuàng)建該文件。 (2)每寫入一個字符,文件內(nèi)部位置指針向后移動一個字節(jié)。 (3)fputc函數(shù)有一個返回值,如寫入成

11、功則返回寫入的字符, 否則返回一個EOF??捎么藖砼袛鄬懭胧欠癯晒?。,14.4 文件的讀寫 一、字符讀寫函數(shù)fgetc和fput,第十四章 文件,例14.1從鍵盤輸入一行字符,寫入一個文件,再把該文件內(nèi)容讀出顯示在屏幕上。 #include main( ) FILE *fp; char ch; if(fp=fopen(string,w)=NULL) printf(Cannot open file,press any key exit!); getch( ); exit(1); printf(input a string:n); ch=getchar( ); while (ch!=n) fput

12、c(ch,fp); ch=getchar( ); rewind(fp); ch=fgetc(fp); while(ch!=EOF) putchar(ch); ch=fgetc(fp); printf(n); fclose(fp); ,14.4 文件的讀寫 一、字符讀寫函數(shù)fgetc和fput,第十四章 文件,1讀字符串函數(shù)fgets 函數(shù)調(diào)用形式: fgets(字符數(shù)組名,n,文件指針); 功能:從指定的文件中讀一個字符串到字符數(shù)組中。 其中的n是一個正整數(shù)。表示從文件中讀出的字符串不超過 n1個字符。在讀入的最后一個字符后加上串結(jié)束標(biāo)志0。 如:fgets(str,n,fp); 從fp所指的

13、文件中讀出n1個字符送入字符數(shù)組str中。,14.4 文件的讀寫 二、字符串讀寫函數(shù)fgets和fputs,第十四章 文件,例14.2從e13_1.c文件中讀入一個含10個字符的字符串。 #include main( ) FILE *fp; char str11; if(fp=fopen(e13_1.c,r)=NULL) printf(Cannot open file,press any key exit!); getch( ); exit(1); fgets(str,11,fp); printf(%s,str); fclose(fp); ,14.4 文件的讀寫 二、字符串讀寫函數(shù)fgets和

14、fputs,第十四章 文件,說明: (1)在讀出n1個字符之前,如遇到了換行符或EOF,則讀出結(jié)束。 (2)fgets函數(shù)也有返回值,其返回值是字符數(shù)組的首地址。,14.4 文件的讀寫 二、字符串讀寫函數(shù)fgets和fputs,第十四章 文件,2寫字符串函數(shù)fputs 調(diào)用形為: fputs(字符串,文件指針); 功能:向指定的文件寫入一個字符串。 其中字符串可以是字符串常量,也可以是字符數(shù)組名,或指針變量。 如:fputs(“abcd“,fp); 把字符串“abcd”寫入fp所指的文件之中。,14.4 文件的讀寫 二、字符串讀寫函數(shù)fgets和fputs,第十四章 文件,讀數(shù)據(jù)塊函數(shù)調(diào)用的一

15、般形式為: fread(buffer,size,count,fp); 寫數(shù)據(jù)塊函數(shù)調(diào)用的一般形式為: fwrite(buffer,size,count,fp); buffer是一個指針,在fread函數(shù)中,它表示存放輸入數(shù)據(jù)的首地址。在fwrite函數(shù)中,它表示存放輸出數(shù)據(jù)的首地址。 size 表示數(shù)據(jù)塊的字節(jié)數(shù)。 count 表示要讀寫的數(shù)據(jù)塊塊數(shù)。 fp表示文件指針。,14.4 文件的讀寫 三、數(shù)據(jù)塊讀寫函數(shù)fread和fwrite,第十四章 文件,如:fread(fa,4,5,fp); 從fp所指的文件中,每次讀4個字節(jié)(一個實(shí)數(shù))送入實(shí)數(shù)組fa中,連續(xù)讀5次,即讀5個實(shí)數(shù)到fa中。,1

16、4.4 文件的讀寫 三、數(shù)據(jù)塊讀寫函數(shù)fread和fwrite,第十四章 文件,例14.3從鍵盤輸入兩個學(xué)生數(shù)據(jù),寫入一個文件中,再讀出這兩個學(xué)生的數(shù)據(jù)顯示在屏幕上。 #include struct stu char name10; int num; int age; char addr15; boya2,boyb2,*pp,*qq;,14.4 文件的讀寫 三、數(shù)據(jù)塊讀寫函數(shù)fread和fwrite,第十四章 文件,main( ) FILE *fp; char ch; int i; pp=boya; qq=boyb; if(fp=fopen(stu_list,wb)=NULL) printf(

17、Cannot open file strike any key exit!); getch( ); exit(1); printf(ninput datan); for(i=0;iname, fclose(fp); ,14.4 文件的讀寫 三、數(shù)據(jù)塊讀寫函數(shù)fread和fwrite,第十四章 文件,兩個函數(shù)的調(diào)用格式: fscanf(文件指針,格式字符串,輸入表列); fprintf(文件指針,格式字符串,輸出表列); fscanf函數(shù)和fprintf函數(shù)都是格式化讀寫函數(shù)。 兩者的區(qū)別: fscanf 函數(shù)和fprintf函數(shù)的讀寫對象不是鍵盤和顯示器,而是磁盤文件。 如:fscanf(fp,%d%s,&i,s); fprintf(fp,%d%c,j,ch);,14.4 文件的讀寫 四、格式化讀寫函數(shù)fscanf和fprintf,第十四章 文件,隨機(jī)讀寫:移動文

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論