




版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025陜西省建筑安全員-B證(項(xiàng)目經(jīng)理)考試題庫
- 2025年河北省安全員知識(shí)題庫附答案
- 醫(yī)療耗材銷售合同范本
- 印制資料合同范例
- 細(xì)胞培養(yǎng)鉆石銷售代理合同
- 公司間策劃合同范本
- 出售公寓房合同范本
- 不執(zhí)行合同范本
- 暗能量教育數(shù)據(jù)價(jià)值挖掘
- CUBA 高職組籃球比賽中技術(shù)運(yùn)用的效果研究
- 實(shí)驗(yàn)一 外科常用手術(shù)器械課件
- 電梯結(jié)構(gòu)與原理-第2版-全套課件
- 《現(xiàn)代漢語》語音教學(xué)上課用課件
- 采購流程各部門關(guān)系圖
- 《遙感導(dǎo)論》全套課件
- 力士樂工程機(jī)械液壓培訓(xùn)資料(共7篇)課件
- 村光伏發(fā)電申請書
- 降低混凝土路面裂縫發(fā)生率QC小組資料
- 【教師必備】部編版四年級(jí)語文上冊第二單元【集體備課】
- 支氣管擴(kuò)張的護(hù)理PPT
- 施工現(xiàn)場專項(xiàng)消防安全檢查表
評論
0/150
提交評論