全國計(jì)算機(jī)等級(jí)考試培訓(xùn)教材(二級(jí)C)課件 ch12 文件_第1頁
全國計(jì)算機(jī)等級(jí)考試培訓(xùn)教材(二級(jí)C)課件 ch12 文件_第2頁
全國計(jì)算機(jī)等級(jí)考試培訓(xùn)教材(二級(jí)C)課件 ch12 文件_第3頁
全國計(jì)算機(jī)等級(jí)考試培訓(xùn)教材(二級(jí)C)課件 ch12 文件_第4頁
全國計(jì)算機(jī)等級(jí)考試培訓(xùn)教材(二級(jí)C)課件 ch12 文件_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

計(jì)算機(jī)等級(jí)考試第十二章文件高等院校公共課系列精品教材C語言文件的概念01ONE12.1C語言文件的概念1考點(diǎn)1文件的概念和文件指針1.文件的相關(guān)概念文件(file),一般指存儲(chǔ)在外部介質(zhì)上的數(shù)據(jù)集合。在前面的章節(jié)中,編寫C語言程序,主要通過鍵盤輸入給變量賦值,通過顯示器顯示輸出數(shù)據(jù)。如果我們想讀取磁盤已有的數(shù)據(jù),需要讀取磁盤文件,同時(shí)也可以將數(shù)據(jù)保存到文件中,進(jìn)行永久存儲(chǔ)。其實(shí),以前我們從鍵密輸入,輸出到顯示器,利用了系統(tǒng)文件,鍵盤是標(biāo)準(zhǔn)輸入文件,顯示器是標(biāo)準(zhǔn)輸出文件。文件的3種分類方法如下。(1)按數(shù)據(jù)存放形式分為ASCII文件(文本文件)和二進(jìn)制文件。(2)按存取方式分為順序方式存取和隨機(jī)方式存取。(3)按處理方式分為緩沖文件和非緩沖文件。12.1C語言文件的概念1考點(diǎn)1文件的概念和文件指針ASCII文件是指,數(shù)據(jù)按ASCII碼轉(zhuǎn)化為一串字符,一個(gè)字符占一個(gè)字節(jié),如10000按字符1、0、0、0、0這5個(gè)字符存儲(chǔ),占用5個(gè)字節(jié);二進(jìn)制文件是指數(shù)據(jù)不需要任何轉(zhuǎn)換,直接按二進(jìn)制存儲(chǔ)。數(shù)據(jù)10000為整型數(shù)據(jù),占4個(gè)字節(jié)。10000在內(nèi)存、ASCII文件、二進(jìn)制文件中存儲(chǔ)圖見圖(0的ASCII碼值為48)。12.1C語言文件的概念1考點(diǎn)1文件的概念和文件指針2.文件類型指針每個(gè)被使用的文件都在內(nèi)存中開辟相應(yīng)的文件信息區(qū),用于存放文件的相關(guān)信息,包括文件的名稱、文件讀寫方式等。這些信息以結(jié)構(gòu)體變量進(jìn)行保存,該結(jié)構(gòu)體類型由系統(tǒng)聲明力FILE,F(xiàn)ILE信息包含在頭文件“stdio.h”,中,在程序中直接利用FILE定義變量:FILE*fp;fp是一個(gè)指向FILE類型結(jié)構(gòu)體的指針變量,通過文件指針變量找到與它相關(guān)的文件。指向文件的指針變量并不是指向外部介質(zhì)上的數(shù)據(jù)的開頭,而是指向內(nèi)存中的文件信息區(qū)開頭,具體我們可以不了解,但是要知道fp與文件進(jìn)行了關(guān)聯(lián)。文件的打開與關(guān)閉02TWO12.2文件的打開與關(guān)閉1考點(diǎn)2

fopen()函數(shù)和fclose()函數(shù)對文件讀寫之前應(yīng)該“打開”該文件,讀寫完畢應(yīng)該“關(guān)閉”該文件。在編寫程序時(shí),打開文件,實(shí)際上是建立了文件與文件指針的關(guān)聯(lián),這樣就可以通過指針文件對文件進(jìn)行讀寫。所謂關(guān)閑,就是文件讀寫完畢,撤銷文件與指針文件的關(guān)聯(lián),不再進(jìn)行讀寫操作。fopen函數(shù)(1)fopen函數(shù)的調(diào)用方式:fopen(文件名,使用文件方式);例如:fopen(“filename”,“r");表示要打開的文件為“filename”,使用文件方式為r(r代表read,即讀),fopen函數(shù)的返回值為指向filename文件的指針。通常將函數(shù)fopen函數(shù)的返回值賦值給一個(gè)指向文件的指針變量。12.2文件的打開與關(guān)閉1考點(diǎn)2

fopen()函數(shù)和fclose()函數(shù)(2)文件的使用方式見表。12.2文件的打開與關(guān)閉1考點(diǎn)2

fopen()函數(shù)和fclose()函數(shù)2.fclose()函數(shù)在使用一個(gè)文件后應(yīng)該關(guān)閉它,以防止它被誤用。關(guān)閉文件,實(shí)際是斷開了文件指針與文件信息區(qū)域的關(guān)聯(lián),斷開后不能通過文件指針進(jìn)行讀寫該文件,除非再次打開,重新建立指針與文件的關(guān)聯(lián)。(1)調(diào)用方式:fclose(fp);。(2)順利完成關(guān)閉操作,返回值為0,否則返回EOF(-1)。順序讀寫數(shù)據(jù)03THREE12.3順序讀寫數(shù)據(jù)文件打開之后,就可以對文件進(jìn)行讀寫了。順序讀寫是,先寫入的數(shù)據(jù)放在文件的前面位置,后寫入的數(shù)據(jù)放在后面。也就是對順序文件的讀寫順序與數(shù)據(jù)在文件中的實(shí)際物理順序一致。對文件基本讀寫包括以下內(nèi)容。(1)讀寫一個(gè)字符。(2)讀寫字符串。(3)按格式讀寫字符。(4)用二進(jìn)制方式向文件讀寫一組數(shù)據(jù)。12.3順序讀寫數(shù)據(jù)1考點(diǎn)3fputc()函數(shù)和fgetc()函數(shù)向文本文件讀寫一個(gè)字符的函數(shù)見表。12.3順序讀寫數(shù)據(jù)1考點(diǎn)4

fgets()函數(shù)和fputs()函數(shù)fputs()函數(shù)實(shí)現(xiàn)寫入一個(gè)字符,重復(fù)操作可以逐個(gè)向文件中寫入字符,能否一次讀寫字符串呢?可以利用fputs實(shí)現(xiàn)一次寫一個(gè)字符串。讀寫一個(gè)字符串的函數(shù)見表。說明:(1)fgets(str,n,fp);從fp指向的文件輸入n-1個(gè)字符,在最后加一個(gè)’\0’,得到字符串共有n個(gè)字符,把它們放到字符數(shù)組str中。(2)fputs("China”,fp);把字符串"China"輸出到fp指向的文件,字符串未尾’\0’不輸出。12.3順序讀寫數(shù)據(jù)1考點(diǎn)5fscanf()函數(shù)和fprintf()函數(shù)用格式化的方式讀寫文件與scanf和printf功能相似,只是讀寫的文件不一定是鍵盤和顯示器,還可以是磁盤當(dāng)中文件。fscanf(文件指針,格式控制宇符串,輸入列表);fprintf(文件指針,格式控制宇符串,輸出列表);文件指針如果指向標(biāo)準(zhǔn)文件,fscanf(文件指針,格式控制字符串,輸入列表)中的文件指針為stdin,則fscanf和scanf功能相同,從鍵盤輸入;同樣,如果fprintf(文件指針,格式控制字符串,輸出列表)中的文件指針為stdout,則將數(shù)據(jù)輸出到顯示器。12.3順序讀寫數(shù)據(jù)1考點(diǎn)6

fread()函數(shù)和fwrite()函數(shù)在程序中不僅需要一次輸入、輸出一個(gè)數(shù)據(jù),而且常常需要一次輸入、輸出一組數(shù)據(jù)(如結(jié)構(gòu)變量和數(shù)組),C語言可以通過fread函數(shù)從文件中讀一個(gè)數(shù)據(jù)塊,用fwrite函數(shù)向文件寫一個(gè)數(shù)據(jù)塊。在讀寫時(shí)是以二進(jìn)制形式進(jìn)行的。12.3順序讀寫數(shù)據(jù)1考點(diǎn)6

fread()函數(shù)和fwrite()函數(shù)fread函數(shù)fread函數(shù)的功能是從文件中讀取數(shù)據(jù)塊,其調(diào)用函數(shù)為:fread(buffer,size,count,fp);說明:(1)butfer是一個(gè)指針,存放輸入數(shù)據(jù)的首地址;size是每個(gè)數(shù)據(jù)塊的字節(jié)數(shù);count是每次讀入數(shù)據(jù)塊的個(gè)數(shù);fp是文件指針。(2)此函數(shù)的功能是從fp所指向的文件的當(dāng)前位置開始讀取,一次讀取size個(gè)字節(jié),重復(fù)讀取count次,并將讀取的數(shù)據(jù)存放到buffer為首地址的內(nèi)存中;同時(shí),文件內(nèi)讀寫位置移動(dòng)sizeXcount個(gè)字節(jié)。(3)如果函數(shù)fread讀取成功,函數(shù)返回值為count。12.3順序讀寫數(shù)據(jù)1考點(diǎn)6

fread()函數(shù)和fwrite()函數(shù)2.fwrite函數(shù)fwrite函數(shù)的功能是向文件中寫數(shù)據(jù)塊,其調(diào)用函數(shù)為:fwrite(buffer,size,count,fp);說明:(1)buffer是一個(gè)指針,用于存放讀取數(shù)據(jù)的首地址;size是每個(gè)數(shù)據(jù)塊的字節(jié)數(shù);count是每次讀取數(shù)據(jù)塊的個(gè)數(shù):fp是文件指針。(2)此函數(shù)的功能是從fpbuffer開始,一次讀取size個(gè)字節(jié),重復(fù)讀取count次,并將讀取的數(shù)據(jù)存放到fp所指向的文件中;同時(shí),文件內(nèi)讀寫位置移動(dòng)sizeXcount個(gè)字節(jié)。(3)如果函數(shù)fwrite輸出成功,則函數(shù)返回值count。隨機(jī)讀寫文件04FOUR12.4隨機(jī)讀寫文件順序讀取文件是從頭到尾進(jìn)行讀取,容易理解,但效率不高,如想找到第100個(gè)數(shù)據(jù),必須先找到前99個(gè),再找第100個(gè),數(shù)據(jù)越大,查找靠后數(shù)據(jù)效率越低。隨機(jī)訪問則不需要按順序逐個(gè)讀取,而是直接訪問任意指定位置的數(shù)據(jù),效率大大提高。介紹一個(gè)新概念“文件位置指針”,前面介紹的文件指針是FILE類型的指針變量,實(shí)現(xiàn)與文件的關(guān)聯(lián),而文件位置指針則指文件內(nèi)要讀寫操作的位置。通常打開一個(gè)文件,文件位置指針指向文件的開頭。當(dāng)文件位置指針指向文件末尾,表示文件結(jié)束。文件位置指針見圖。12.4隨機(jī)讀寫文件1考點(diǎn)7rewind()函數(shù)1考點(diǎn)8fseek()函數(shù)(1)調(diào)用形式:rewind(fp);(2)功能:使文件位置指針重新返回文件的開頭。(1)功能:將文件的位置指針移動(dòng)到指定位置。(2)調(diào)用形式:Fseek(文件指針,位移量,起始點(diǎn))

起始點(diǎn)可以用0、1、2所代表的文件頭、文件當(dāng)前位置、文件末尾;位移量是以起始點(diǎn)力基點(diǎn),向前移動(dòng)的位移量,為long型數(shù)據(jù),

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論