C語言第十章文件實用教案_第1頁
C語言第十章文件實用教案_第2頁
C語言第十章文件實用教案_第3頁
C語言第十章文件實用教案_第4頁
C語言第十章文件實用教案_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、10.1 C文件(wnjin)概述文件:文件指存儲(cn ch)在外部介質(zhì)(如磁盤磁帶)上數(shù)據(jù)的集合。 第1頁/共23頁第一頁,共24頁。文件的分類按數(shù)據(jù)的組織形式:ASCII文件(文本文件):每一個字節(jié)(z ji)放一個ASCII代碼二進制文件:把內(nèi)存中的數(shù)據(jù)按其在內(nèi)存中的存儲形式.10.1 C10.1 C文件文件(wnjin)(wnjin)概述概述( (續(xù)續(xù)) ) 按文件(wnjin)存取方式分:順序存取文件(wnjin),隨機存取文件(wnjin)第2頁/共23頁第二頁,共24頁。10.2 10.2 文件類型指針文件類型指針(zhzhn)(zhzhn)(續(xù)續(xù)) )文件型指針(zhzhn)

2、(zhzhn)變量: :FILE FILE * *fpfp;fpfp是一個指向FILEFILE類型結(jié)構(gòu)體的指針(zhzhn)(zhzhn)變量。如果有個文件,一般應(yīng)設(shè)個指針(zhzhn)(zhzhn)變量,使它們分別指向個文件,以實現(xiàn)對文件的訪問。第3頁/共23頁第三頁,共24頁。10.3 10.3 文件文件(wnjin)(wnjin)的打開與關(guān)閉的打開與關(guān)閉一.文件的打開(fopen函數(shù)(hnsh)函數(shù)(hnsh)調(diào)用:FILE *fp;fpfopen(文件名,使用文件方式);文件名用” ”括起來,可以為文件所在的路徑;使用文件的方式(“讀”還是“寫”等);FILE *fp;fpfopen(

3、”file1”,”r”);fpfopen(”d:lxfile1.dat”,”r”);第4頁/共23頁第四頁,共24頁。10.3 10.3 文件的打開文件的打開(d ki)(d ki)與關(guān)閉與關(guān)閉( (續(xù)續(xù)) )文件使用方式含 義 “r” (只讀)為輸入打開一個(y )文本文件“w” (只寫)為輸出打開一個(y )文本文件“a” (追加)向文本文件尾增加數(shù)據(jù)“rb” (只讀)為輸入打開一個(y )二進制文件“wb” (只寫)為輸出打開一個(y )二進制文件ab“ (追加)向二進制文件尾增加數(shù)據(jù)r+“ (讀寫)為讀/寫打開一個(y )文本文件w+” (讀寫)為讀/寫建立一個(y )新的文本文件a+

4、” (讀寫)為讀/寫打開一個(y )文本文件rb+“ (讀寫)為讀/寫打開一個(y )二進制文件“wb+“ (讀寫)為讀/寫建立一個(y )新的二進制文件“ab+” (讀寫)為讀/寫打開一個(y )二進制文件第5頁/共23頁第五頁,共24頁。10.3 10.3 文件的打開文件的打開(d ki)(d ki)與關(guān)閉與關(guān)閉( (續(xù)續(xù)) )二.文件(wnjin)的關(guān)閉(fclose函數(shù))函數(shù)調(diào)用:fclose(文件(wnjin)指針);函數(shù)功能: 使文件(wnjin)指針變量不指向該文件(wnjin),返回值:關(guān)閉成功返回值為;否則返回EOF(-1) 。第6頁/共23頁第六頁,共24頁。10.4 文件

5、(wnjin)的讀寫一、字符輸入輸出函數(shù)(fputc(),fgetc()1 fputc(字符,文件指針);函數(shù)功能(gngnng): 將字符寫入成文件指針指向的文件中返回值:關(guān)閉成功返回字符;否則返回EOF(-1) 。第7頁/共23頁第七頁,共24頁。10.4 10.4 文件文件(wnjin)(wnjin)的讀寫的讀寫( (續(xù)續(xù)) )從鍵盤(jinpn)上輸入一行字符,將其寫入文件中,直到遇到#為止。#include main() FILE *fp; char ch,filename10; scanf(%s,filename); if(fp=fopen(filename,w)=NULL) pr

6、intf(cannot open filen); exit(0); /*終止程序*/ getchar( ); /*接收執(zhí)行scanf語句時最后輸入的回車符 */ while(ch=getchar( )!=#) /* 接收輸入的第一個字符 */ fputc(ch,fp); fclose(fp); 第8頁/共23頁第八頁,共24頁。10.4 文件(wnjin)的讀寫2 fgetc(文件指針);函數(shù)功能: 從文件指針指向的文件中讀入字符返回值:關(guān)閉成功(chnggng)返回讀入的字符;否則返回EOF(-1)第9頁/共23頁第九頁,共24頁。10.4 10.4 文件文件(wnjin)(wnjin)的讀

7、寫的讀寫( (續(xù)續(xù)) )fputc和fgetc函數(shù)使用舉例:例3從鍵盤輸入一些字符(z f),逐個把它們送到磁盤上去,直到輸入一個“”為止。 輸出文件內(nèi)容(nirng)到屏幕。#include main() FILE *fp; char ch,filename10; scanf(%s,filename); if(fp=fopen(filename,“r)=NULL) printf(cannot open filen); exit(0); /*終止程序*/ ch= fgetc(fp ); while(ch!=EOF) putchar(ch); ch=fgetc(fp); fclose(fp);第

8、10頁/共23頁第十頁,共24頁。10.4 文件(wnjin)的讀寫feof(文件指針)函數(shù)來判斷文件是否真的(zhn de)結(jié)束。如果是文件結(jié)束,函數(shù)feof(fp)的值為(真);否則為(假)。第11頁/共23頁第十一頁,共24頁。10.4 10.4 文件文件(wnjin)(wnjin)的讀寫的讀寫一、字符串輸入輸出函數(shù)(hnsh)(fputs()和fgets()fputs函數(shù)(hnsh)函數(shù)(hnsh)調(diào)用:fputs ( str,fp ) ; 函數(shù)(hnsh)功能: 將字符串str輸出到fp所指向的文件中去。 返回值:如果輸出成功,則返回值就是輸出的字符;如果輸出失敗,則返回一個EOF。

9、第12頁/共23頁第十二頁,共24頁。10.4 10.4 文件文件(wnjin)(wnjin)的讀寫的讀寫( (續(xù)續(xù)) )fgets函數(shù)函數(shù)調(diào)用:fgets(str,n,fp);函數(shù)功能: 從指定的文件讀入n-1字符放入str起始的地址中。 返回值:讀取字符串包含最后讀到的n,自動在末尾加0。如果(rgu)遇到文件結(jié)束符(n或eof),返回null 。第13頁/共23頁第十三頁,共24頁。10.4 10.4 文件文件(wnjin)(wnjin)的讀寫的讀寫( (續(xù)續(xù)) )二、數(shù)據(jù)塊對二進制文件讀寫函數(shù)(fread()和fwrite()函數(shù)調(diào)用:fread (buffer,size,count,

10、fp);fwrite(buffer,size,count,fp); 參數(shù)(cnsh)說明:buffer:是一個指針。對fread 來說,它是讀入數(shù)據(jù)的存放地址。對fwrite來說,是要輸出數(shù)據(jù)的地址(均指起始地址)。size: 要讀寫的字節(jié)數(shù)。count: 要進行讀寫多少個size字節(jié)的數(shù)據(jù)項。fp: 文件型指針。第14頁/共23頁第十四頁,共24頁。10.4 10.4 文件文件(wnjin)(wnjin)的讀寫的讀寫( (續(xù)續(xù)) ) 使用(shyng)舉例: 若文件以二進制形式打開: fread(f,4,2,fp); 此函數(shù)從fp所指向的文件中讀入2個4個字節(jié)的數(shù) 據(jù),存儲到數(shù)組f中。第15

11、頁/共23頁第十五頁,共24頁。10.4 10.4 文件文件(wnjin)(wnjin)的讀寫的讀寫( (續(xù)續(xù)) )使用舉例(j l):若有如下結(jié)構(gòu)類型:struct student_typechar name10; int num; int age; char addr30;stud40;可以用fread和fwrite來進行數(shù)據(jù)的操作:for(;) fread(&studi,sizeof(struct student_type),1,fp); for(;,)fwrite(&studi,sizeof(struct student_type),1,fp); 第16頁/共23頁第十

12、六頁,共24頁。10.4 10.4 文件文件(wnjin)(wnjin)的讀寫的讀寫( (續(xù)續(xù)) )三、格式化讀寫函數(shù)(fprintf()和fscanf()函數(shù)調(diào)用:fprintf ( 文件指針,格式字符串,輸出表列);fscanf ( 文件指針,格式字符串,輸入(shr)表列); 函數(shù)功能: 從磁盤文件中讀入或輸出字符。 例:fprintf(fp,”%d,%6.2f”,i,t);fscanf (fp,”%d,%f”,&i,&t);第17頁/共23頁第十七頁,共24頁。10.5 10.5 文件文件(wnjin)(wnjin)的定位的定位順序讀寫和隨機讀寫順序讀寫:位置指針按字節(jié)

13、位置順序移動。隨機讀寫:讀寫完上一個字符(字節(jié))后,并不一定要讀寫其后續(xù)(hux)的字符(字節(jié)),而可以讀些文件中任意位置上所需要的字符(字節(jié))。 第18頁/共23頁第十八頁,共24頁。10.5 10.5 文件文件(wnjin)(wnjin)的定位的定位fseek函數(shù)(一般用于二進制文件)函數(shù)功能:改變(gibin)文件的位置指針。函數(shù)調(diào)用形式:fseek(文件類型指針,位移量,起始點)起始點:文件開頭 SEEK_SET 0 文件當(dāng)前位置 SEEK_CUR 1 文件末尾 SEEK_END 2位移量:以起始點為基點,向前移動的字節(jié)數(shù)。一般 要求為long型。 第19頁/共23頁第十九頁,共24頁

14、。10.5 10.5 文件文件(wnjin)(wnjin)的定位的定位fseek函數(shù)應(yīng)用舉例fseek(fp,100L,);將位置指針移到離文件(wnjin)頭100個字節(jié)處。fseek(fp,50L, );將位置指針移到離當(dāng)前位置50個字節(jié)處。fseek(fp,50L, );將位置指針從文件(wnjin)末尾處向后退5個字節(jié)。 第20頁/共23頁第二十頁,共24頁。10.5 10.5 文件文件(wnjin)(wnjin)的定位的定位ftell函數(shù)(hnsh)函數(shù)(hnsh)作用:得到流式文件中的當(dāng)前位置,用相對于文件開頭的位移量來表示。返回值:返回當(dāng)前位置,出錯時返回-1L。應(yīng)用舉例:long i;i = ftell(fp); 第21頁/共23頁第二十一頁,共24頁。10.5 10.5 文件文件(wnjin)(wnjin)的定位的定位rewind(文件指針)函數(shù)函數(shù)作用(zuyng):將文件指針重新定位于文件開始位置.返回值:無。應(yīng)用舉例:rewind(fp); 第22頁/共23頁第二十二頁,共24頁。感謝您的欣賞(xnshng)!第23頁/共23頁第二十三頁,共24頁。N

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論