c語言課件60912054.ppt_第1頁
c語言課件60912054.ppt_第2頁
c語言課件60912054.ppt_第3頁
c語言課件60912054.ppt_第4頁
c語言課件60912054.ppt_第5頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、所謂的“文件”是指存儲在計算機(jī)外部存儲介質(zhì)上的數(shù)據(jù)集合。操作系統(tǒng)通過文件名訪問和組織數(shù)據(jù)。c語言把一個文件看作一個字符序列(字節(jié)),即一次由一個字符組成的數(shù)據(jù)序列。根據(jù)數(shù)據(jù)的組織,文件可以分為兩種類型:文本文件和二進(jìn)制文件。文本文件以字符的形式存儲數(shù)據(jù)信息。文件中的信息可分為字符,并存儲字符的代碼。8.1文件類型和文件類型指針變量,第8章數(shù)據(jù)文件處理技術(shù),二進(jìn)制文件按照其在內(nèi)存中的形式在文件中存儲數(shù)據(jù),文件中信息的表示與計算機(jī)內(nèi)存中的表示完全相同,文件中的數(shù)據(jù)信息可以分成字節(jié),但通常由幾個字節(jié)組成,以形成有意義的數(shù)據(jù)信息。例如,4字節(jié)的信息構(gòu)成一個整數(shù)。文本文件和二進(jìn)制文件的區(qū)別1。存儲數(shù)字?jǐn)?shù)

2、據(jù)的形式是不同的。例如,整數(shù)10000在內(nèi)存中由4個字節(jié)表示,它需要5個字節(jié)才能保存到文本文件中。二進(jìn)制文件中只保存了4個字節(jié)。2.文本文件的數(shù)據(jù)是字符,易于閱讀。但是二進(jìn)制文件中的信息很難理解。為了有效地管理和控制設(shè)備,操作系統(tǒng)在內(nèi)存中為程序使用的每個文件創(chuàng)建適當(dāng)大小的緩沖區(qū)。當(dāng)一個程序想從一個文件中讀取一些信息時,系統(tǒng)首先一次讀入足夠的信息,并把它存儲在一個緩沖區(qū)中,以便程序一部分一部分地使用。當(dāng)一個程序想把信息寫入一個文件時,它也會先把信息寫入緩沖區(qū)。當(dāng)緩沖區(qū)已滿或文件完成時,它會將緩沖區(qū)的內(nèi)容寫入文件。要在文件中讀寫數(shù)據(jù),程序首先打開要讀寫的文件(在寫入文件時可能會創(chuàng)建一個新文件),然

3、后向文件中讀寫數(shù)據(jù),并在使用結(jié)束時關(guān)閉文件。程序與文件數(shù)據(jù)交換的實(shí)現(xiàn)過程。文件類型File用于存儲文件操作所需的控制信息結(jié)構(gòu),如文件名、文件讀寫狀態(tài)、文件緩沖區(qū)大小和位置、當(dāng)前讀寫位置等。文件類型由系統(tǒng)預(yù)定義。文件類型指針變量FILE *fp。程序在使用文件之前調(diào)用open函數(shù)。open函數(shù)為文件指定文件類型結(jié)構(gòu),并返回指向該結(jié)構(gòu)的指針。系統(tǒng)可以通過指向結(jié)構(gòu)的指針正確地讀寫文件。使用文件指針變量,C程序可以找到與之對應(yīng)的文件。為了訪問程序中的n個文件,通常應(yīng)該設(shè)置n個文件指針變量。文件類型指針變量,1。文件打開函數(shù)fopen () form: fopen(文件名,用法)函數(shù):分配一個結(jié)構(gòu)來存儲

4、文件控制信息,并返回一個指向該結(jié)構(gòu)的指針。其中:文件名(包括目錄路徑)是一個字符串表達(dá)式。函數(shù)返回值:如果打開成功,函數(shù)返回一個文件指針;打開不成功,返回空值。例如:fp=fopen(usr4smp.dat , w );指示根目錄下的usr4子目錄中的smp.dat文件是以寫入方式打開的。第一個是轉(zhuǎn)義字符,8.2中常用的數(shù)據(jù)文件庫函數(shù)由于某種原因可能無法打開文件。例如,讀取文件會打開一個不存在的文件;在寫入文件的模式中,外部存儲介質(zhì)上沒有剩余可用空間,或者存在外圍設(shè)備故障。或者超過系統(tǒng)可以同時打開的文件數(shù)量。當(dāng)文件無法打開時,函數(shù)fopen()返回一個空指針值。該程序應(yīng)考慮文件無法正常打開的極

5、端情況,并使用以下形式的代碼來描述打開文件的要求:if (FP=fopen (fname, r)=null) printf(無法打開文件%s)。n ,fname);返回;,文件用法的含義是“r”是只讀的,文本文件“w”是只為讀而寫的,文本文件“a”是為寫而附加的,文本文件“rb”從文本文件的結(jié)尾開始是只讀的,二進(jìn)制文件“wb”只為讀而寫,二進(jìn)制文件“ab”是為寫而附加的,文本文件“w”是從二進(jìn)制文件的結(jié)尾開始讀寫的,而文本文件“w”是為讀/寫而讀寫的。創(chuàng)建并打開一個新的文本文件“A”進(jìn)行讀/寫,并打開該文本文件進(jìn)行讀/寫。表8-1文件用法,表單:fclose (fp)函數(shù):導(dǎo)致文件指針變量fp

6、終止與最初調(diào)用函數(shù)fopen()時建立的文件的連接。函數(shù)返回值:如果關(guān)機(jī)成功,函數(shù)返回0;如果檢測到錯誤,返回EOF(在stdio.h文件中定義為1)。例如:fc los(FP)。注:1。文件關(guān)閉后,除非再次打開,否則無法通過文件指針變量讀取或?qū)懭胂惹斑B接的文件。2.文件關(guān)閉后,原始文件指針變量可用于打開其他文件,并與其他文件建立新的連接。文件關(guān)閉函數(shù)fclose(),錯誤索引:表單:fgetc (fp)函數(shù):從文件指針fp指向的文件中讀取字符(類似于getchar函數(shù))。函數(shù)返回值:讀取成功,返回讀取字符;當(dāng)在讀取過程中遇到文件結(jié)尾時,將返回文件結(jié)尾標(biāo)志EOF。例如,ch=fgetc(fp)

7、。表示從fp文件中讀取字符并存儲在變量ch中。以fputc (ch,fp)函數(shù)的形式從文件中讀取一個字符函數(shù)fgetc():將ch中的字符輸出到文件指針fp所指向的文件中(類似于putchar函數(shù))。函數(shù)返回值:輸出成功,返回輸出字符;如果輸出失敗,則返回EOF。例如:fputc(A,F(xiàn)P);將大寫字母A寫到fp所指向的文件中。4.以fprintf(文件指針、格式字符串、輸出項(xiàng)目表)函數(shù)的形式向文件函數(shù)fputc()寫入字符:該函數(shù)類似于printf函數(shù)。函數(shù)返回值:輸出成功,返回輸出的實(shí)際字符數(shù);如果輸出失敗,則返回EOF。例如:fprintf (wp, i=%d r=%6.4fn ,I,r

8、);指示整數(shù)變量I和實(shí)數(shù)變量r的值根據(jù)格式輸出到wp所指向的文件。5。格式輸出函數(shù)fprintf(),格式:fscanf(文件指針、格式字符串、輸入項(xiàng)地址表)函數(shù):其功能類似于scanf函數(shù)。函數(shù)返回值:讀取成功,返回讀取數(shù)據(jù)的實(shí)際數(shù)量;如果讀取失敗,將返回EOF。例如,fscanf (rp, %d %f ,意味著從rp指向的文件中讀取整數(shù)變量I和浮點(diǎn)變量r的數(shù)據(jù)。6。格式化輸入函數(shù)fscanf(),表單:fgets (str,n,fp)函數(shù):從指定文件中讀取n-1個字符,并將其存儲到字符串?dāng)?shù)組中(類似于get函數(shù))。函數(shù)返回值:讀取成功,返回字符串的第一個地址;讀取失敗返回空地址。注:1。當(dāng)

9、連續(xù)讀取n-1個字符時,或遇到換行符時,或遇到文件結(jié)尾時,字符讀取過程結(jié)束。2.讀入字符串后,將在末尾自動添加0。例如:char a80;文件*同時(!feof(in)printf(“% s”,fgets(a,80,in);指示文件的內(nèi)容逐行輸出。從文件中讀取字符串函數(shù)fgets(),格式:fput(str,fp)函數(shù):輸出字符串到fp指向的文件(類似于puss函數(shù))。其中:字符串可以是字符串常量、字符數(shù)組或字符指針。函數(shù)返回值:輸出成功,返回最后一個輸出字符;輸出失敗,返回EOF。例如:油炸圈餅(“中國”,油炸圈餅);指示字符串“中國”被輸出到fp所指向的文件。將字符串寫入文件函數(shù)fputs

10、()函數(shù):表單:倒帶(fp)函數(shù):返回文件中當(dāng)前由fp指向文件頂部的讀寫位置。函數(shù)返回值:無。返回文件頭功能倒帶(),表單:fseek (fp,offset,ptname)功能:任意移動文件的當(dāng)前位置,實(shí)現(xiàn)隨機(jī)讀寫。其中:ptname是讀寫文件的起始位置,只允許0、1或2。0表示文件的開頭(或SEEK _ SET);1表示當(dāng)前位置(或SEEK _ CUR);2表示文件的結(jié)尾(或SEEK_END)。偏移量是一個長的位移,基于ptname和移動的字節(jié)數(shù)。函數(shù)返回值:成功移動返回0,否則返回非0。10。文件當(dāng)前位置移動功能偏移量(),示例1偏移量(FP,40L,搜索_設(shè)置);指示當(dāng)前位置從文件頭移動

11、了40個字節(jié)。示例2 FSEEK (FP,20L,Seek _ CUR);指示當(dāng)前位置從當(dāng)前位置移動到20字節(jié)。示例3 FSEEK (FP,-30L,搜索_結(jié)束);指示當(dāng)前位置從文件末尾向后移動30字節(jié)。注意:fseek通常用于二進(jìn)制文件的隨機(jī)讀寫。函數(shù)fseek -例如,form: ftell (fp)函數(shù):獲取從fp指向的文件的當(dāng)前位置到文件開頭的字節(jié)偏移量。函數(shù)返回值:從文件開始到文件當(dāng)前讀寫位置的距離(以字節(jié)為單位)。例如:偏移量(fp,0L,SEEK_END)。/*當(dāng)前位置移動到文件末尾*/len=ftell(FP);/*查找文件的長度*/,11。函數(shù)ftell()從文件頭到當(dāng)前位置的距離,形式:fread(緩沖區(qū),大小,計數(shù),fp)函數(shù):從fp指向的文件中讀取計數(shù)*大小字節(jié),并將它們存儲在緩沖區(qū)中。函數(shù)返回值:讀取成功返回計數(shù)值,否則返回0

溫馨提示

  • 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

提交評論