文件.ppt_第1頁
文件.ppt_第2頁
文件.ppt_第3頁
文件.ppt_第4頁
文件.ppt_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

文件的作用 長期保存數(shù)據(jù) 程序與文件的關(guān)系 1 可通過程序來建立和更新文件內(nèi)容 2 程序中處理的數(shù)據(jù)可以從文件中獲得 10 1文件的基本概念 計算機(jī)可處理的文件 源程序 圖形文件 音頻文件 數(shù)據(jù)文件等等 按數(shù)據(jù)的組織形式可分為 文本文件 二進(jìn)制文件 c語言可以對文本文件和二進(jìn)制文件進(jìn)行讀寫操作 c語言把每一個文件都看作是一個有序的字節(jié)流 流 是文件和程序之間通訊的通道 三種與文件關(guān)聯(lián)的流 1 標(biāo)準(zhǔn)輸入流 可讀取來自鍵盤的數(shù)據(jù) 2 標(biāo)準(zhǔn)輸出流 可把數(shù)據(jù)打印到屏幕上 3 標(biāo)準(zhǔn)錯誤流 可指出對文件的錯誤操作類型 緩沖文件系統(tǒng) 標(biāo)準(zhǔn)i o 每一個被打開的文件都會在內(nèi)存開辟一個緩沖區(qū) 優(yōu)越性 提高對數(shù)據(jù)的處理速度 減少對磁盤的讀寫次數(shù) 非緩沖文件系統(tǒng) 系統(tǒng)i o 系統(tǒng)不設(shè)置緩沖區(qū) 由程序設(shè)置 或稱低層文件系統(tǒng) 優(yōu)越性 靈活 高效 提醒 標(biāo)準(zhǔn)i o與系統(tǒng)i o分別采用不同的輸入 輸出函數(shù) 1 對文件操作所需的 文件信息 是一結(jié)構(gòu)體變量 且該結(jié)構(gòu)體變量由系統(tǒng)定義 typedefstruct shortleve1 unsignedflags charfd unsignedcharhold shortbsize unsignedchar buffer unsignedchar curp unsignedistemp shorttokem file 文件指針 定義形式 2 用戶只需定義指向文件類型的指針變量即可 如 file fp1 fp2 3 系統(tǒng)對文件提供的信息有 緩沖區(qū)的狀態(tài) 緩沖區(qū)中未被處理的字符個數(shù) 文件當(dāng)前的讀寫位置 緩沖區(qū)的地址 緩沖區(qū)的大小 對任何文件的操作步驟 打開文件 關(guān)閉文件 讀或?qū)?10 2文件的基本操作 標(biāo)準(zhǔn)i o的讀寫函數(shù) 1 讀寫一個字符 fgetc fputc 2 讀寫一個字符串 fgets fputs 3 格式化讀寫變量 fscanf fprintf 4 格式化讀寫一個記錄 塊 fread fwrite 一 文件打開 使用fopen 函數(shù) 調(diào)用方式 若正確 則返回一個指向該文件的指針 若錯誤 則返回錯誤標(biāo)志null fopen 文件名 文件操作方式 10 2 1建立順序文件 r 以只讀方式打開一個文本文件 w 以只寫方式打開一個文本文件 a 以追加方式打開一個文本文件 r 以讀 寫方式打開一個文本文件 w 以讀 寫方式建立一個新的文本文件 a 以讀 寫方式打開一個文本文件 二 文件的打開模式 rb 以只讀方式打開一個二進(jìn)制文件 wb 以只寫方式打開一個二進(jìn)制文件 ab 以追加方式打開一個二進(jìn)制文件 rb 以讀 寫方式打開一個二進(jìn)制文件 wb 以讀 寫方式建立一個新的二進(jìn)制文件 ab 以讀 寫方式打開一個二進(jìn)制文件 includemain file p p fopen test txt r if p null printf fileopenerror n elseprintf fileopenok n 例 討論 1 文件 test txt 所在位置如何 2 在程序結(jié)束之前如果沒有關(guān)閉打開的文件 文件會不會遭到破壞 3 文件test txt的內(nèi)容是什么 c語言規(guī)定 fopen 函數(shù)中的文件名可以是當(dāng)前工作目錄 相對路徑 下的也可以是指定路徑 絕對路徑 下的 如 fopen c dos config sys r 三 文件關(guān)閉 使用fclose 函數(shù) 調(diào)用方式 作用 關(guān)閉一個已打開的文件 釋放文件信息區(qū) fclose 文件指針變量 上例的改進(jìn) includemain file p p fopen test txt r if p null printf fileopenerror n else 文件處理語句段 fclose fp 四 向文件中寫數(shù)據(jù)的函數(shù) 對文件不論是讀還是寫 c程序只把文件看作是字節(jié)流 注意 1 向文件中寫入數(shù)據(jù)時 若文件不存在 則系統(tǒng)會創(chuàng)建一個新文件 2 若文件已存在 則 以 w 方式打開文件時 文件原有內(nèi)容在打開的同時會被沖掉 以 a 方式打開文件時 文件原有內(nèi)容保留 向文件寫入的內(nèi)容插入到文件的尾部 1 向文件流中輸入一個字符 charfputc charch file fp 若正確 返回字符ch 若錯誤 返回eof 2 向文件流中寫入一個字符串 intfputs char s file fp 若正確 返回一個非負(fù)數(shù) 若錯誤 返回eof 3 按指定的格式向文件流中輸入數(shù)據(jù) fprintf file fp char fm 變量名表列 如 fprintf fp d f s a b w 格式字符串 與格式符對應(yīng)的變量 例 編寫一程序 把下面的內(nèi)容寫入文件mytest1 txt中 輸入時以字符 作為結(jié)束 includemain file fp charch fp fopen mytest1 txt w if fp null printf fileopenerror n elsewhile ch getchar fputc ch fp fclose fp apple505 5pear404 4orange303 3 運行情況如下 例2 采用字符串輸入方式將上面的內(nèi)容輸入到文件mytest2 txt中去 以不輸入任何字符直接回車作為輸入結(jié)束 apple505 5pear404 4orange303 3 include includemain file fp charw 20 fp fopen mytest2 txt w if fp null printf fileopenerror n elsewhile strlen gets w 0 fputs w fp fputs n fp fclose fp 1 若無此語句 程序的運行結(jié)果會是怎樣的 2 怎樣結(jié)束程序的運行 思考 輸入的字符串的長度不要超過數(shù)組定義的大小 否則會出錯 apple505 5 pear404 4 orange303 3 結(jié)果 查看當(dāng)前目錄下的mytest2 txt文件的內(nèi)容 運行情況如下 例3 按指定輸入格式把上面的內(nèi)容輸入到文件mytest3 txt中去 以任意單個字符作為輸入結(jié)束 apple505 5pear404 4orange303 3 例 includemain file fp inta floatb charch w 20 fp fopen mystest3 txt w if fp null printf fileopenerror n else scanf s w while strlen w 1 scanf d f 運行情況如下 使用fputc fputs fprintf 可以達(dá)到同一個目的 17 2 2讀取順序文件中的數(shù)據(jù) 文件的結(jié)束標(biāo)志 eof 1 從文件流中讀取一個字符 fgetc fp 返回值 讀取的字符 有三個重要的讀函數(shù) 指向文件的指針 2 從文件流中讀取一字符串 讀一行字符 作用 從文件流中讀取n 1字符 放入數(shù)組s中 fgets chars intn fp 返回值 s所指的字符串 數(shù)組名 n個字符數(shù) 文件指針變量 注意 1 第n個字符為系統(tǒng)加入的空字符 0 2 若在第n 1個字符前遇到換行符 停止讀寫 3 若遇到文件結(jié)束或調(diào)用出錯 返回null 3 按指定格式從文件流中讀取變量 fscanf 文件指針變量 格式控制符字符串 變量地址表列 作用 從文件流中按指定的格式 讀取變量 并將讀取的變量保存到對應(yīng)的變量中 例 fscanf fp s d f name 文件指針變量 1 從文件中讀 fread buffer size count fp 2 向文件中寫 fwrite buffer size count fp 其中 buffer 數(shù)據(jù)存儲的起始地址 size 要讀寫的字節(jié)數(shù) count 讀寫的數(shù)據(jù)項 fp 文件指針變量 返回值 count的值 注意 使用fread fwrite來讀寫文件時 文件必須以二進(jìn)制的方式打開 10 2 3按 記錄 的方式讀寫 10 2 4隨機(jī)存取文件 問題 要求打開文件后 對指定位置上的數(shù)據(jù)進(jìn)行讀寫操作 減少一些不必要的中間環(huán)節(jié) 解決的辦法 把文件指針移到指定的位置即可 關(guān)鍵步驟 文件的定位 一 文件定位函數(shù) fseek 文件指針變量 位移量 起始點 注 1 起始點的取值只有3種 2 位移量 以起始點為基點移動的字節(jié)數(shù) 0 文件開始處 1 文件位置指針的當(dāng)前位置 2 文件尾 3 位移量應(yīng)為long型 4 fseek 的返回值 0 成功 非零 失敗 例 fseek fp 20l 0 將位置指針移到離文件頭20個字節(jié)處 fseek fp 10l 1 將位置指針移到離文件尾30個字節(jié)處 fseek fp 30l 2 將位置從當(dāng)前位置向后移10個字節(jié) 注意 此處的20l是20和字母l 二 位置函數(shù) ftell 文件指針變量 作用 返回文件指針的當(dāng)前指向位置 返回值 0 文件指針的當(dāng)前指向 1 出錯 例 文件data1 txt的內(nèi)容如下 thisisatest c語言程序設(shè)計 隨機(jī)讀寫函數(shù)測試 要求編寫一程序隨機(jī)讀出指定的記錄 三 重新定位函數(shù) rewind 文件指針變量 作用 使文件指針返回到文件的開頭 無返回值 include includemain file fp intloc1 loc2 longd 8l charw fp fopen data1 txt r if fp null printf error n else loc1 fseek fp d 0 if loc1 0 w fgetc fp printf

溫馨提示

  • 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

提交評論