C語言課件第十三章

上傳人:494895****12427 文檔編號:251447577 上傳時間:2024-11-07 格式:PPTX 頁數(shù):43 大?。?05.88KB
收藏 版權(quán)申訴 舉報 下載
C語言課件第十三章_第1頁
第1頁 / 共43頁
C語言課件第十三章_第2頁
第2頁 / 共43頁
C語言課件第十三章_第3頁
第3頁 / 共43頁

下載文檔到電腦,查找使用更方便

20 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《C語言課件第十三章》由會員分享,可在線閱讀,更多相關(guān)《C語言課件第十三章(43頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,2014/5/30,#,第十三章,文件,第十三章文件,1,本章要點,文件的基本概念,文件的基本函數(shù),文件的順序讀寫,文件的隨機讀寫,文件簡單應(yīng)用,本章要點 文件的基本概念,2,主要內(nèi)容,13.1,文件概述,13.2,文件類型指針,13.3,文件的打開與關(guān)閉,13.4,文件的讀寫,13.5,文件的定位,13.6,出錯的檢測,13.7,文件輸入輸出小結(jié),主要內(nèi)容13.1 文件概述,3,13.1 C,文件概述,文件:,文件指存儲在外部介質(zhì),(,如磁盤磁帶,),上,數(shù)據(jù)的集合。,操作系統(tǒng)是以文件為單位對數(shù)據(jù)進行管理的。

2、,文件,程序,數(shù)據(jù)區(qū),輸,出,文件緩沖區(qū),輸,入,文件緩沖區(qū),13.1 C文件概述文件:文件指存儲在外部介質(zhì)(如磁盤磁帶),4,13.1 C,文件概述,(,續(xù),),文件的分類,從用戶觀點,:,特殊文件,(,標準輸入輸出文件或標準設(shè)備文件,),。,普通文件,(,磁盤文件,),。,從操作系統(tǒng)的角度看,每一個與主機相連的輸入,輸出設(shè)備看作是一個文件。,例,:輸入文件:終端鍵盤,輸出文件:顯示屏和打印機,13.1 C文件概述(續(xù))文件的分類,5,文件的分類,按數(shù)據(jù)的組織形式,:,ASCII,文件,(,文本文件,):,每一個字節(jié)放一個,ASCII,代碼,二進制文件,:,把內(nèi)存中的數(shù)據(jù)按其在內(nèi)存中的存儲形

3、,式原樣輸出到磁盤上存放。,例:,整數(shù),10000,在內(nèi)存中的存儲形式以及分別按,ASCII,碼形式和二進制形式輸出如下圖所示:,13.1 C,文件概述,(,續(xù),),文件的分類13.1 C文件概述(續(xù)),6,13.1 C,文件概述,(,續(xù),),文件的分類,ASCII,文件和二進制文件的比較:,ASCII,文件,便于對字符進行逐個處理,也便于輸出,字符。但一般占存儲空間較多,而且要花費轉(zhuǎn)換時,間。,二進制文件,可以節(jié)省外存空間和轉(zhuǎn)換時間,但一個,字節(jié)并不對應(yīng)一個字符,不能直接輸出字符形式。,一般中間結(jié)果數(shù)據(jù)需要暫時保存在外存上,以后又,需要輸入內(nèi)存的,常用二進制文件保存。,13.1 C文件概述(

4、續(xù))文件的分類,7,13.1 C,文件概述,(,續(xù),),文件的分類,C,語言對文件的處理方法:,緩沖文件系統(tǒng):,系統(tǒng)自動地在內(nèi)存區(qū)為每一個正,在使用的文件開辟一個緩沖區(qū)。用緩沖文件系統(tǒng),進行的輸入輸出又稱為,高級磁盤輸入輸出,。,非緩沖文件系統(tǒng):,系統(tǒng)不自動開辟確定大小的緩,沖區(qū),而由程序為每個文件設(shè)定緩沖區(qū)。用非緩,沖文件系統(tǒng)進行的輸入輸出又稱為,低級輸入輸出,系統(tǒng)。,13.1 C文件概述(續(xù))文件的分類,8,13.1 C,文件概述,(,續(xù),),說明,:,在,UNIX,系統(tǒng)下,用緩沖文件系統(tǒng)來處理文本文件,用非緩沖文件系統(tǒng)來處理二進制文件。,ANSI C,標準只采用緩沖文件系統(tǒng)來處理文本文,

5、件和二進制文件。,C,語言中對文件的讀寫都是用庫函數(shù)來實現(xiàn)。,13.1 C文件概述(續(xù))說明:,9,13.2,文件類型指針,Turbo,在,stdio.h,文件中有以下的文件類型聲明:,typedef struct,shortlevel;,*緩沖區(qū),“,滿,”,或,“,空,”,的程度*,unsignedflags;,*文件狀態(tài)標志*,charfd;,*文件描述符*,unsignedcharhold;,*如無緩沖區(qū)不讀取字符*,shortbsize;,*緩沖區(qū)的大小*,unsignedchar*buffer,;/*,數(shù)據(jù)緩沖區(qū)的位置*,/,unsignedar*curp;,/*,指針,當前的指向

6、*,/,unsignedistemp;,/*,臨時文件,指示器*,/,shorttoken;,/*,用于有效性檢查*,/,FILE,;,在緩沖文件系統(tǒng)中,每個被使用的文件都要在內(nèi)存中開辟一,FILE,類型的區(qū),存放文件的有關(guān)信息。,13.2 文件類型指針Turbo 在stdio.h文件中有,10,13.2,文件類型指針,(,續(xù),),FILE,類型的數(shù)組:,FILE,f,5,;,定義了一個結(jié)構(gòu)體數(shù)組,f,,它有,5,個元素,,可以用來存放,5,個文件的信息。,文件型指針變量,:,FILE *fp,;,fp,是一個指向,FILE,類型結(jié)構(gòu)體的,指針變量??梢允?fp,指向某一個文件的結(jié)構(gòu)體變量,從

7、,而通過該結(jié)構(gòu)體變量中的文件信息能夠訪問該文件。如果,有個文件,一般應(yīng)設(shè)個指針變量,使它們分別指向,個文件,以實現(xiàn)對文件的訪問。,13.2 文件類型指針(續(xù))FILE類型的數(shù)組:,11,13.3,文件的打開與關(guān)閉,一,.,文件的打開,(fopen,函數(shù),),函數(shù)調(diào)用,:,FILE *fp,;,fp,fopen,(,文件名,,,使用文件方式,);,需要打開的文件名,也就是準備訪問的文件的名字;,使用文件的方式(,“,讀,”,還是,“,寫,”,等);,讓哪一個指針變量指向被打開的文件。,13.3 文件的打開與關(guān)閉一.文件的打開(fopen函數(shù)),12,13.3,文件的打開與關(guān)閉,(,續(xù),),文件使

8、用方式含 義,“,r,”,(,只讀,),為,輸入,打開一個,文本,文件,“,w,”,(,只寫,),為,輸出,打開一個,文本,文件,“,a,”,(,追加,),向,文本,文件尾增加數(shù)據(jù),“,rb,”,(,只讀,),為,輸入,打開一個,二進制,文件,“,wb,”,(,只寫,),為,輸出,打開一個,二進制,文件,ab,“,(,追加,),向,二進制,文件尾增加數(shù)據(jù),r+,“,(,讀寫,),為,讀,/,寫,打開一個,文本,文件,w+,”,(,讀寫,),為,讀,/,寫建立,一個新的,文本,文件,a+,”,(,讀寫,),為讀,/,寫打開一個文本文件,rb+,“,(,讀寫,),為讀,/,寫打開一個,二進制,文件

9、,“,wb+,“,(,讀寫,),為讀,/,寫,建立,一個新的,二進制,文件,“,ab+,”,(,讀寫,),為讀,/,寫打開一個,二進制,文件,13.3 文件的打開與關(guān)閉(續(xù))文件使用方式含,13,13.3,文件的打開與關(guān)閉,(,續(xù),),二,.,文件的關(guān)閉,(fclose,函數(shù),),函數(shù)調(diào)用,:,fclose,(,文件指針,);,函數(shù)功能,:,使文件指針變量不指向該文件,也就是文件指針變,量與文件,“,脫鉤,”,,此后不能再通過該指針對原來與,其相聯(lián)系的文件進行讀寫操作,。,返回值,:,關(guān)閉成功返回值為;否則返回,EOF(-1),。,13.3 文件的打開與關(guān)閉(續(xù))二.文件的關(guān)閉(fclose,

10、14,13.4,文件的讀寫,一、字符輸入輸出函數(shù),(fputs(),和,fgets(),fputs,函數(shù),函數(shù)調(diào)用,:,fputs(ch,,,fp),;,函數(shù)功能,:,將字符(,ch,的值)輸出到,fp,所指向的文件中去。,返回值,:,如果輸出成功,則返回值就是輸出的字符;,如果輸出失敗,則返回一個,EOF,。,13.4 文件的讀寫一、字符輸入輸出函數(shù)(fputs()和f,15,13.4,文件的讀寫,(,續(xù),),fgets,函數(shù),函數(shù)調(diào)用,:,ch,fgets,(,fp,);,函數(shù)功能,:,從指定的文件讀入一個字符,該文件必須是以讀或,讀寫方式打開的。,返回值,:,讀取成功一個字符,賦給。,如

11、果遇到文件結(jié)束符,返回一個文件結(jié)束標志,EOF,。,13.4 文件的讀寫(續(xù))fgets函數(shù),16,13.4,文件的讀寫,(,續(xù),),常見的讀取字符操作,從一個,文本文件,順序讀入字符并在屏幕上顯示出來:,ch=fgetc,(,fp,);,while,(,ch,!,=EOF,),putchar,(,ch,);,ch=fgetc,(,fp,);,注意:,EOF,不是可輸出字符,因此不能在屏幕上顯示。,由于字符的,ASCII,碼不可能出現(xiàn),因此,EOF,定義為,是合適的。當讀入的字符值等于時,表示讀入,的已不是正常的字符而是文件結(jié)束符。,13.4 文件的讀寫(續(xù))常見的讀取字符操作,17,13.4

12、,文件的讀寫,(,續(xù),),常見的讀取字符操作,從一個,二進制文件,順序讀入字符:,while,(!,feof,(,fp,),ch=fgetc,(,fp,);,注意:,ANSI C,提供一個,feof,()函數(shù)來判斷文件是否,真的結(jié)束。如果是文件結(jié)束,函數(shù),feof,(,fp,)的值為,(真);否則為(假)。以上也適用于文本文件的讀取。,13.4 文件的讀寫(續(xù))常見的讀取字符操作,18,13.4,文件的讀寫,(,續(xù),),fputc,和,fgetc,函數(shù)使用舉例:,例,3,從鍵盤輸入一些字符,逐個把它們送到,磁盤上去,直到輸入一個,“,”,為止。,#include,#include,void m

13、ain(void),FILE*fp;,char ch,filename10;,scanf(%s,filename);,if(fp=fopen(filename,w)=NULL),printf(cannot open filen);,exit(0);,/*,終止程序*,/,ch=getchar();,/*,接收執(zhí)行,scanf,語句時最后輸入的回車符*,/,ch=getchar();,/*,接收輸入的第一個字符*,/,while(ch!=#,fputc(ch,fp);putchar(ch);,ch=getchar();,fclose(fp);,運行情況如下:,(輸入磁盤文件名),(輸入一個字符串

14、),(輸出一個字符串),13.4 文件的讀寫(續(xù))fputc和fgetc函數(shù)使用舉,19,13.4,文件的讀寫,(,續(xù),),fputc,和,fgetc,函數(shù)使用舉例:,例,3,將一個磁盤文件中的信息復(fù)制到另一個磁,盤文件中,。,#include,#include,main(),FILE*in,*out;,char ch,infile10,outfile10;,printf(Enter the infile name:n);,scanf(%s,infile);,printf(Enter the outfile name:n);,scanf(%s,outfile);,if(in=fopen(inf

15、ile,r)=NULL),printf(cannot open infilen);,exit(0);,if(out=fopen(outfile,w)=NULL),printf(cannot open outfilen);,exit(0);,while(!feof(in)fputc(fgetc(in),out);,fclose(in);,fclose(out);,運行情況如下:,(輸入原有磁盤文件名,n,:,(輸入新復(fù)制的磁盤文件名),程序運行結(jié)果是將文件中的內(nèi)容復(fù)制到,中去。,13.4 文件的讀寫(續(xù))fputc和fgetc函數(shù)使用舉,20,13.4,文件的讀寫,(,續(xù),),fputc,和,f

16、getc,函數(shù)使用舉例:,例,3,的改進:復(fù)制一個二進制文件,利用,main,參數(shù),在輸入命令行是將兩個文件名輸入。,#include,#include,main(,int,argc,char*argv,),FILE*in,*out;,char ch;,if(argc!=3),printf(You forgot to enter a filenamen);,exit(0);,if(in=fopen(argv1,rb,)=NULL),printf(cannot open infilen);,exit(0);,if(out=fopen(argv2,wb,)=NULL),printf(cannot open outfilen);,exit(0);,while(!feof(in)fputc(fgetc(in),out);,fclose(in);,fclose(out);,運行方法:,設(shè)經(jīng)編譯連接后得到的可執(zhí)行文件名為,a.exe,,則在,DOS,命令工,作方式下,可以輸入以下的命令行:,a,和,分別輸入到,和中,的內(nèi)容為,a,,的,值等于,。,13.4 文件的讀寫(續(xù))fputc和fgetc函

展開閱讀全文
溫馨提示:
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)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔

相關(guān)搜索

關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!