




已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
回顧 結構體的使用共用體的使用枚舉變量結構體數組結構體指針鏈表的使用 問題 1 前面題目的結果是后面的輸入時 2 程序運行的結果需要長期保存 或有其他用途時 3 調試程序時 輸入數據量多 引入文件 第13章文件 掌握文件的打開和關閉掌握并能熟練使用以下函數fputc fgtc fgets fputs fread fwrite fprintf fscanf Focus 一 文件的基本概念1 文件的一般概念文件 file 存儲在外部介質上數據的集合 OS將外部設備也看作文件 終端的鍵盤 顯示器均看作I O文件 第一節(jié)c文件概述 2 C的文件系統(tǒng)緩沖文件系統(tǒng) 系統(tǒng)自動為每個正在使用的文件系統(tǒng)在內存中開辟一個緩沖區(qū) 程序與文件之間的I O經由緩沖區(qū) ANSIC標準采用緩沖文件系統(tǒng) 非緩沖文件系統(tǒng) 系統(tǒng)不自動開辟緩沖區(qū) 由程序為每個文件設定緩沖區(qū) 由于C與UNIX關系密切 UNIXI O系統(tǒng)使用非緩沖文件系統(tǒng) 因而多數C也兼容之 C的I O系統(tǒng)在程序員和設備間提供了一級抽象 這個抽象被稱為流 stream 而實際設備則稱為文件 files 文件由緩沖文件系統(tǒng)變換成抽象的邏輯設備流 C文件是字符 文本 流或二進制流 無其它高級語言所具有的記錄界限 存取以字節(jié)為單位 I O的開始和結束僅受程序控制而不受流中符號的控制 共有兩類流 文本流 text 和二進制流 binary 二 文件流與文件 文本流文本流 textstream 是一種字符序列 以ASCII碼存放 每字符占一個字節(jié) 數值需要逐位轉換 32767存為51 50 55 54 55計五個字節(jié) n 變?yōu)橐粋€回車 換行符號對 CR LFcarraigereturn linefeed ASCII碼13 10 文件末有一字符 z ASCII碼為26 二進制流二進制流 binarystream 是一種字節(jié)序列 數值以二進制數表示 32767存為7FFFH int型時占兩個字節(jié) 不需轉換 節(jié)省存儲空間 從而方便存取 提高速度 標準流ANSIC有三個預定義的標準流 stdin stdout stderr 也稱為標準 文件 它們都對應終端 程序運行時系統(tǒng)自動將它們打開 運行結束自動關閉 例如 使用scanf gets 等函數時使用stdin流 對應標準輸入 鍵盤 使用printf puts 時 使用stdout流 對應標準輸出 顯示器 stderr流也對應標準輸出 顯示器 三 文件的基本操作步驟 打開文件 讀寫 創(chuàng)建 文件 關閉文件 在 stdio h 中 QC struct iobuf char FAR ptr int cnt char FAR base char flag char file typedefstruct iobuffile 例如 file fp1 fp2 typedefstruct int fd 文件號 int cleft 緩沖區(qū)剩下的字符 int mode 文件操作模式 char nextc 下一個字符指針 char buff 文件緩沖區(qū)指針 file 四 指向文件的指針變量 1 打開文件file fp fp fopen mode 為文件名 路徑名 mode對文件的訪問方式一般方法如下 file fp if fp fopen c doc exam txt w NULL puts cannotopenthefile n exit 1 第二節(jié)文件的打開與關閉 mode意義 r 讀文本文件 w 寫或創(chuàng)建文本文件 a 向文本文件追加 rb 讀二進制文件 wb 寫或創(chuàng)建二進制文件 ab 向二進制文件追加 mode意義 r 讀寫文本文件 w 讀寫 創(chuàng)建 文本文件 a 向文本文件追加 rb 讀打開 二進制文件 wb 讀寫 創(chuàng)建 二進制文件 ab 向二進制文件讀寫 追加 2 關閉文件fclose 或 if fclose printf closeerror exit 2 使用FILE類型和fopen fclose 函數應包含stdio h 1 輸入輸出字符1 I O字符ch fgetc fp fputc ch fp 第三節(jié)讀寫文件 putchar ch 實際上是用fputc ch fp 定義的一個宏 defineputchar ch fputc ch stdout 默認輸出到顯示器即標準輸出文件stdout 2 判斷文件尾fgetc 在讀到文件末尾時 返回文件結束標志EOF 在stdio h中定義為 1 此標志只適合于文本文件 因為二進制文件中的數值 1會與其相混 造成提前結束 常用feof 函數測試文件尾 若是文件結束返回值1 它既可以用于二進制文件也可以用于文本文件 feof 文件指針 返回值為1表示文件結束 例 假設軟盤a的根目錄下有一個ASCII碼文件 abc dat 其內容為 Iamastudent 編程完成 1 顯示文件 abc dat 的內容 2 把字符串 Youareaworker 寫入文件 abc dat 3 再次顯示文件 abc dat 的內容 分析 顯示指定的文本文件內容 再寫入新內容 必須打開文件并指定文件的使用方式為 r 表示對同一個文本文件先讀后寫 寫入的新內容覆蓋原有的舊內容 程序清單如下 includemain FILE fp char str Youareaworker intk if fp fopen a abc dat r NULL fp為NULL 表示文件打開失敗 printf 文件不存在 n exit O while feof fp 當文件沒有結束時 feof fp 為假 feof fp 為真 putchar fgetc fp 顯示文件 abc dat 的原有內容 printf n rewind fp 把文件的位置指針移到文件的開始處 for k 0 str k 0 k fputc str k fp 寫入新內容 rewind fp 把文件的位置指針移到文件的開始處 while feof fp 當文件沒有結束時 feof fp 為假 feof fp 為真 putchar fgetc fp 顯示文件 abc dar 的新內容 fclose fp printf n 運行結果 Iamastudent Youareaworker Y You Youareaworker z Yo 2 輸入輸出數據塊一次可I O一個數組或結構體類型的數據ANSIC設置了兩個函數 fread buffer size count fp fwrite buffer size count fp buffer 是一個指針 對fread來說 它是讀入數據的存放地址 對fwrite來說 是要輸出數據的地址 以上指的是起始地址 size 要讀寫的字節(jié)數 count 要進行讀寫多少個size字節(jié)的數據項 fp 文件型指針 例 文件sru list中有4個學生的有關數據 將它們讀出在屏幕上顯示出來 然后把它們重新存到磁盤文件上去 include stdio h defineSIZE4structstudent type charname l0 intnum intage charaddr l5 stud SIZE main FILE fP inti if fp fopen stu list rb NULL printf cannotopenfile xn return for i 0 i SIZE i fread 3 格式化I Ofprintf fp 格式字符串 輸出表列 fscanf fp 格式字符串 輸入表列 除fp外 其余同printf scanf 4 串輸入輸出fgets str1 n fp 從fp指定的文件中讀出n 1個字符到str1 并在最后添加一個 0 或遇換行符 EOF符停止 fputs str2 fp 把str2的內容輸出到fp指定的文件中 str2可以是字符串常量 字符數組 字符型指針 注 使用方法與gets puts類似 例 從鍵盤輸入數據 97101 李明 男 20 和 97102 王小麗 女 18 存放在文件 txtl dat 中 再將文件 txtl dat 的數據讀出并顯示 includestructstd longxh charname 7 charsex 3 intnl main FILE fp structstda inti if fp fopen txt1 dat w NULL fp為NULL 表示文件打開失敗 printf 磁盤空間不夠 n exit 0 for i 0 i 2 i scanf ld s d 1 返回文件開頭rewind fp 2 隨機定位fseek fp 偏移量 基點 基點名字數字表示文件開始SEEK SET0文件當前位置SEEK CUR1文件末尾SEEK END2偏移量可以 課堂例題 課后練習 上機作業(yè) fscanf函數的正確調用形式是 A fscanf 文件指針 格式字符串 輸出表列 B fscanf 格式字符串 文件指針 輸出表列 C fscanf 格式字符串 輸出表列 文件指針 D fscanf 文件指針 格式字符串 輸入表列 D C語言標準庫函數 fgets string n fp 的功能是 A 從文件fp中讀取長度為n的字符串存入指針string指向的內存B 從文件fp中讀取長度為n 1的字符串存入指針string指向的內存C 從文件fp中讀取n個字符串存入指針string指向的內存D 從文件fp中讀取長度不超過長度為n的字符串存入指針string指向的內存 B 輸出結果為 includeFILE fp main ints 0 i a 4 15 25 33 58 b if fp fopen data txt w NULL printf error n exit 0 for i 0 i 4 i fprintf fp d a i fclose fp if fp fopen data txt r NULL printf cannotopenthisfile n exit 0 for i 1 i 4 i fscanf fp d 結果為73 上機作業(yè) 1 閱讀下面的程序 指出它的功能 并上機調試驗證 include stdio h voidmain FILE fp charch if fp fopen w NULL printf can topenthisfile exit 1 while ch getchar n fputc ch fp fclose fp 2 從鍵盤上輸入任意10個數 把10個數按由小到大的順序排列 然后把這組數輸出到文件out txt中 再把這組數中相同的數據刪得只剩一個 然后以每行4個數的格式追加到文件out txt中去 例如輸入9 8 6 10 4 8 9 7 5 4 則文件out txt中的內容為 4 4 5 6 7 8 8 9 9 104 5 6
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025學年度春季線上教學資源整合計劃
- 學前教育機構發(fā)展規(guī)劃與計劃
- 2025年小班家長溝通策略計劃
- 2025八年級下冊物理實驗教學計劃
- 部編版語文教學計劃與信息技術的結合
- 手術室護理新技術學習計劃
- 建筑行業(yè)的職業(yè)道德與安全心得體會
- 仁愛七年級下英語單詞拼寫比賽策劃
- 醫(yī)院理療科崗位職責
- 2025年壓實機械項目發(fā)展計劃
- 2024河北高考地理真題卷解析 課件
- 城市道路日常養(yǎng)護作業(yè)服務投標文件(技術方案)
- 《當前國際安全形勢》課件
- 3.1 貫徹新發(fā)展理念 課件-高中政治統(tǒng)編版必修二經濟與社會
- 《互換性復習》課件
- 《光伏系統(tǒng)設計培訓》課件
- 設備的運行動態(tài)管理制度(4篇)
- 抖店仲裁申請書模板
- 借款利率協議
- 雞球蟲課件(共32張課件)《動物疫病防治》
- 2024年第三屆職業(yè)技能競賽(井下作業(yè)工賽項)理論考試題庫(含答案)
評論
0/150
提交評論