11.1 文件的概述與打開_第1頁
11.1 文件的概述與打開_第2頁
11.1 文件的概述與打開_第3頁
11.1 文件的概述與打開_第4頁
11.1 文件的概述與打開_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、LOGOLOGO掌握文件類型指針(FILE類型指針)的概念、存儲(chǔ)方式和文件打開方式Teacher teaching designCONTENTS 目 錄文件概述文件打開與關(guān)閉案例分析仿真演練文件概述PART 01C語言中的文件是流式文件,即一個(gè)C文件就是上述的字節(jié)流或者二進(jìn)制流二進(jìn)制文件可以節(jié)省數(shù)據(jù)的存儲(chǔ)空間和縮短數(shù)據(jù)的訪問時(shí)間把數(shù)據(jù)按其在內(nèi)存中的存儲(chǔ)形式存放在外存中的文件稱為二進(jìn)制文件二進(jìn)制文件“文件”是一種有序的數(shù)據(jù)集合,通常存儲(chǔ)在計(jì)算機(jī)的外部存儲(chǔ)介質(zhì)上。系統(tǒng)和用戶都可以將具有一定獨(dú)立功能的程序段、程序模塊、數(shù)據(jù)等命名存為文件。定義我們把數(shù)據(jù)按其ASCII碼形式存放的文件稱為ASCII文件

2、也叫文本文件文本文件文件的定義及存儲(chǔ)方式ASCII碼: 00110101 00110110 00110111 00111000十進(jìn)制碼:5 678共占用4個(gè)字節(jié)。按ASCII碼形式存儲(chǔ),則將5678按字符形式一一將其對(duì)應(yīng)的ASCII碼存儲(chǔ)在磁盤上,占四個(gè)字節(jié)。數(shù)據(jù)5678的存儲(chǔ)形式為:文件的存儲(chǔ)二進(jìn)制碼: 00110101 00110110 00110111 00111000只占二個(gè)字節(jié)。二進(jìn)制文件雖然也可在屏幕上顯示,C系統(tǒng)在處理這些文件時(shí),并不區(qū)分類型,都看成是字符流,按字節(jié)進(jìn)行處理。ASCII碼文件可在屏幕上按字符顯示,例如源程序文件就是ASCII文件,用DOS命令TYPE可顯示文件的內(nèi)

3、容。由于是按字符顯示,因此能讀懂文件內(nèi)容。C系統(tǒng)在處理這些文件時(shí),輸入輸出字符流的開始和結(jié)束只由程序控制而不受物理符號(hào)(如回車符)的控制。 因此也把這種文件稱作“流式文件”。ASCII文件二進(jìn)制文件文件的存儲(chǔ)typedef struct shortlevel;/* 緩沖區(qū)“空”或者“滿”的程度 */unsignedflags;/* 文件狀態(tài)標(biāo)志 */charfd; /* 文件描述符 */unsigned charhold; /* 若沒有緩沖區(qū)不讀取字符 */shortbsize; /* 緩沖區(qū)大小,一般512字節(jié) */unsigned char*buffer;/* 緩沖區(qū)的位置 */unsig

4、ned char*curp; /* 當(dāng)前的指針指向 */unsignedistemp; /* 臨時(shí)文件,指示器 */shorttoken; /* 用作有效性檢查 */FILE;FILE結(jié)構(gòu)體類型的定義系統(tǒng)為文件在內(nèi)存中自動(dòng)開辟一個(gè)緩沖區(qū)來存放文件的信息,C語言是用一個(gè)結(jié)構(gòu)體變量來存放這些信息的,通常由系統(tǒng)定義了FILE結(jié)構(gòu)體類型,該結(jié)構(gòu)類型由系統(tǒng)定義、取名為FILE。概念結(jié)構(gòu)類型名“FILE”必須大寫。文件類型指針概念表示fp是一個(gè)指向FILE類型結(jié)構(gòu)體的指針變量??梢允筬p指向某一個(gè)文件的結(jié)構(gòu)體變量,從而通過該結(jié)構(gòu)體變量中的文件信息能夠訪問該文件。FILE*fp;定義格式*文件類型指針概念文

5、件打開與關(guān)閉PART 02文件在進(jìn)行讀寫操作之前要先打開,使用完畢要關(guān)閉。實(shí)際上是建立文件的各種有關(guān)信息,并使文件指針指向該文件,以便進(jìn)行其它操作打開文件即斷開指針與文件之間的聯(lián)系,也就是禁止再對(duì)該文件進(jìn)行操作。關(guān)閉文件在語言中,文件操作都是由庫函數(shù)來完成的。添加標(biāo)題內(nèi)容該函數(shù)返回一個(gè)指向FILE類型的指針,如果為空指針NULL,則表示文件打開錯(cuò)誤,通常在讀寫文件之前來檢驗(yàn)打開文件是否正確返回值2如:if ( (fp = fopen (test.txt , w) = NULL)出錯(cuò)處理 “文件指針名”必須是被說明為FILE 類型的指針變量;“文件名”是被打開文件的文件名;“打開文件方式”是指文

6、件的類型和操作要求。“文件名”是字符串常量或字符串?dāng)?shù)組。3調(diào)用的一般形式:文件指針名=fopen(文件名,打開文件方式);文件的打開(fopen函數(shù))1文件的打開根據(jù)對(duì)文件的操作不同,可以不同方式打開文件文件的操作方式 r(read): 讀 w(write): 寫 a(append): 追加 t(text): 文本文件,可省略不寫 b(banary): 二進(jìn)制文件 +: 讀和寫六個(gè)字符的含義1文件使用方式由r,w,a,t,b,+六個(gè)字符拼成文件的打開若要向一個(gè)已存在的文件追加新的信息,只能用“a”方式打開文件。但此時(shí)該文件必須是存在的,否則將會(huì)出錯(cuò)。追加模式用“w”打開的文件只能向該文件寫入。

7、若打開的文件不存在,則以指定的文件名建立該文件,若打開的文件已經(jīng)存在,則將該文件刪去,重建一個(gè)新文件。凡用“r”打開一個(gè)文件時(shí),該文件必須已經(jīng)存在,且只能從該文件讀出。只讀模式文件的打開方式只寫模式 if(fp=fopen(c:hzk16,rb)=NULL) printf(nerror on open c:hzk16 file!); getch(); exit(1);在打開一個(gè)文件時(shí),如果出錯(cuò),fopen將返回一個(gè)空指針值NULL。在程序中可以用這一信息來判別是否完成打開文件的工作,并作相應(yīng)的處理。因此常用以下程序段打開文件:把一個(gè)文本文件讀入內(nèi)存時(shí),要將ASCII碼轉(zhuǎn)換成二進(jìn)制碼,而把文件以

8、文本方式寫入磁盤時(shí),也要把二進(jìn)制碼轉(zhuǎn)換成ASCII碼,因此文本文件的讀寫要花費(fèi)較多的轉(zhuǎn)換時(shí)間。對(duì)二進(jìn)制文件的讀寫不存在這種轉(zhuǎn)換。溫馨提示文件的打開fclose函數(shù)用來關(guān)閉一個(gè)由fopen函數(shù)打開的流文件,把緩沖區(qū)里的內(nèi)容傳給文件。因此必須在程序結(jié)束前關(guān)閉文件,否則會(huì)引起數(shù)據(jù)丟失、文件損壞及其他錯(cuò)誤。int fclose(FILE *fp);調(diào)用方式該函數(shù)返回一個(gè)整型值,如果文件關(guān)閉成功,則返回值等于0,否則表示出錯(cuò)。fclose函數(shù)文件的關(guān)閉打開一個(gè)c盤test目錄下的文本文件readme.txt用以讀取其中的內(nèi)容,然后關(guān)閉。例題感知#include void main( ) FILE *fp

9、; fp = fopen(c:testreadme.txt, rt); if(fp=fopen(c:hzk16,rb)=NULL) printf(nerror on open c:hzk16 file!); getch(); exit(1); fclose(fp);應(yīng)用舉例案例分析交流提升PART 03A)文本文件和數(shù)據(jù)文件 B)文本文件和二進(jìn)制文件 C)數(shù)據(jù)文件和二進(jìn)制文件 D)數(shù)據(jù)代碼文件C語言可以處理的文件類型是( )C語言把文件看作是一個(gè)字符的序列,即由一個(gè)個(gè)字符的數(shù)據(jù)流組成,一個(gè)文件是一個(gè)字符流。能對(duì)數(shù)據(jù)流處理的文件形式只能是文本文件和二進(jìn)制文件解析案例分析答案為B下列語句中,將C定

10、義為文件型指針的是()A) FILE c; B) FILE *c; C) file c; D)file *c; 文件控制塊的類型已由系統(tǒng)命名為FILE.所以定義文件指針變量是C,就得用代碼:“FILE *c;”解析案例分析下述關(guān)于C語言文件操作的結(jié)論中,( )是正確的。A)對(duì)文件操作必須先關(guān)閉文件 B)對(duì)文件操作必須先打開文件C)對(duì)文件操作順序無要求 D)對(duì)文件操作前必須先測(cè)試文件是否存在,然后再打開文件解析對(duì)文件進(jìn)行讀寫操作之前必須先打開文件,打開文件意味著將文件與一個(gè)指針相連,然后才能通過指針操作文件。通過打開文件也可以測(cè)試文件是否存在案例分析若要打開已經(jīng)存在的非空文件”FILE”進(jìn)行修改

11、,正確的打開語句是( )A)fp=fopen(”FILE”,”r”); B)fp=fopen(”FILE”,”ab+”); C)fp=fopen(”FILE”,”w+”); D)fp=fopen(”FILE”,”r+”);解析fopen()函數(shù)的功能是以適當(dāng)?shù)奈募J酱蜷_指定的文件,若指定的文件不能打開,該函數(shù)返回0,否則返回非0值。要對(duì)存在的文件進(jìn)行修改,則說明對(duì)文件要進(jìn)行讀寫操作。案例分析仿真演練體驗(yàn)探索PART 041、file1.txt文件已經(jīng)存在,執(zhí)行fopen(“file1.txt”,”r+”)的功能是( )。A)打開file1.txt文件,清除原有的內(nèi)容;B)打開file1.tx

12、t文件,只能寫入新的內(nèi)容;C)打開file1.txt文件,只能讀取原有內(nèi)容;D)打開file1.txt文件,可以讀取和寫入新的內(nèi)容;仿真演練2、若要打開A盤上user子目錄下名為abc.txt的文本文件進(jìn)行讀、寫操作,下面符合此要求的函數(shù)調(diào)用是( ) 。 A) fopen(A:userabc.txt,r) B) fopen(A:userabc.txt,r+)C) fopen(A:userabc.txt,rb) C) fopen(A:userabc.txt,w)添加標(biāo)題內(nèi)容3、以下敘述中錯(cuò)誤的是( ) A)C語言中對(duì)二進(jìn)制文件的訪問速度比文本文件快 B)C語言中,隨機(jī)文件以二進(jìn)制代碼形式存儲(chǔ)數(shù)據(jù) C)語句 FILE fp; 定義了一個(gè)名為fp的文件指針 D)C語言中的文本文件以ASCII碼形式存儲(chǔ)數(shù)據(jù)仿真演練4、

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論