歡迎來(lái)到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁(yè) 裝配圖網(wǎng) > 資源分類 > PPT文檔下載  

C語(yǔ)言程序設(shè)計(jì)教程第11章北京郵電大學(xué)出版社.ppt

  • 資源ID:6333681       資源大?。?span id="n05oqcy" class="font-tahoma">293.55KB        全文頁(yè)數(shù):28頁(yè)
  • 資源格式: PPT        下載積分:9.9積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開(kāi)放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要9.9積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號(hào),方便查詢和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開(kāi),此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁(yè)到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無(wú)水印,預(yù)覽文檔經(jīng)過(guò)壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒(méi)有明確說(shuō)明有答案則都視為沒(méi)有答案,請(qǐng)知曉。

C語(yǔ)言程序設(shè)計(jì)教程第11章北京郵電大學(xué)出版社.ppt

1 11 1文件概述11 2標(biāo)準(zhǔn)文件操作 第十一章文件 2 在程序運(yùn)行時(shí) 程序本身和數(shù)據(jù)一般都存放在內(nèi)存中 當(dāng)程序運(yùn)行結(jié)束后 存放在內(nèi)存中的數(shù)據(jù)被釋放 如果需要長(zhǎng)期保存程序運(yùn)行所需的原始數(shù)據(jù) 或程序運(yùn)行產(chǎn)生的結(jié)果 就必須以文件形式存儲(chǔ)到外部存儲(chǔ)介質(zhì)上 一 文件與文件名文件是指存放在外部存儲(chǔ)介質(zhì)上的數(shù)據(jù)集合 為標(biāo)識(shí)一個(gè)文件 每個(gè)文件都必須有一個(gè)文件名 其一般結(jié)構(gòu)為 主文件名 擴(kuò)展名 文件命名規(guī)則 遵循操作系統(tǒng)的約定 11 1文件概述 3 二 數(shù)據(jù)文件的存儲(chǔ)形式數(shù)據(jù)文件用于保存數(shù)據(jù) 其讀寫往往由應(yīng)用程序?qū)崿F(xiàn) 1 字符文件 也稱文本文件或正文文件 其數(shù)據(jù)以字符的形式出現(xiàn) 每個(gè)字符用一個(gè)ASCII代碼 占一個(gè)字節(jié) 表示 2 二進(jìn)制文件 以數(shù)據(jù)在內(nèi)存中的形式原樣存于磁盤 在TurboC中 二進(jìn)制文件中 整型數(shù)用2個(gè)字節(jié)表示 長(zhǎng)整型用4個(gè)字節(jié)表示 實(shí)型數(shù) 浮點(diǎn)數(shù) 用4個(gè)字節(jié) 雙精度數(shù)用8個(gè)字節(jié)表示 4 例 十進(jìn)制整數(shù)10000 在內(nèi)存中占兩字節(jié) 其存放形式是 0010 0111 0001 0000 在二進(jìn)制文件中也按這中方式存放 占2個(gè)字節(jié) 在ASCII文件中 存放為31H 30H 30H 30H 30H 占5個(gè)字節(jié) 它們分別是1 0 0 0 0 0字母的ASCII碼 5 比較 字符文件的每1個(gè)字節(jié)存儲(chǔ)1個(gè)字符 因而便于對(duì)字符進(jìn)行逐個(gè)處理 但一般占用存儲(chǔ)空間較多 而且要花費(fèi)轉(zhuǎn)換時(shí)間 二進(jìn)制與ASCII碼之間的轉(zhuǎn)換 二進(jìn)制文件是把內(nèi)存中的數(shù)據(jù) 原樣輸出到磁盤文件中 可以節(jié)省存儲(chǔ)空間和轉(zhuǎn)換時(shí)間 但1個(gè)字節(jié)并不對(duì)應(yīng)1個(gè)字符 不能直接輸出字符形式 6 三 標(biāo)準(zhǔn)文件與非標(biāo)準(zhǔn)文件 1 標(biāo)準(zhǔn)文件系統(tǒng) 利用緩沖區(qū)將對(duì)磁盤文件進(jìn)行操作的文件系統(tǒng)稱為緩沖 或高層 文件系統(tǒng) 用戶使用方便 從內(nèi)存向磁盤輸出數(shù)據(jù)時(shí) 必須首先輸出到緩沖區(qū)中 待緩沖區(qū)裝滿后 再一起輸出到磁盤文件中 從磁盤文件向內(nèi)存讀入數(shù)據(jù)時(shí) 則正好相反 首先將一批數(shù)據(jù)讀入到緩沖區(qū)中 再?gòu)木彌_區(qū)中將數(shù)據(jù)逐個(gè)送到程序數(shù)據(jù)區(qū) 2 非標(biāo)準(zhǔn)文件系統(tǒng) 不使用緩沖區(qū)的磁盤文件系統(tǒng)稱為非緩沖 或低層 文件系統(tǒng) 編程難度較大 但程序的執(zhí)行效率高 占用內(nèi)存資源較少 7 在C語(yǔ)言中 無(wú)論是使用標(biāo)準(zhǔn)文件系統(tǒng)還是非標(biāo)準(zhǔn)文件系統(tǒng) 都是利用I O庫(kù)函數(shù)完成文件操作的 8 要調(diào)用一個(gè)文件 需要有以下的信息 文件當(dāng)前的讀寫位置 與該文件對(duì)應(yīng)的內(nèi)存緩沖區(qū)的地址 文件操作方式等1 每個(gè)被使用的文件都在內(nèi)存中開(kāi)辟一個(gè)區(qū) 用來(lái)存放文件的有關(guān)信息 這些信息是保存在一個(gè)結(jié)構(gòu)體類型的變量中 該結(jié)構(gòu)體類型是由系統(tǒng)定義的 取名為FILE 2 標(biāo)準(zhǔn)文件系統(tǒng)借助FILE數(shù)據(jù)結(jié)構(gòu)對(duì)文件進(jìn)行管理 利用文件指針讀寫文件 每當(dāng)程序成功打開(kāi)一個(gè)文件 系統(tǒng)就在內(nèi)存建立一個(gè)與該文件對(duì)應(yīng)的FILE結(jié)構(gòu)體變量 并返回該變量的指針 地址 11 2標(biāo)準(zhǔn)文件操作 一 標(biāo)準(zhǔn)文件FILE結(jié)構(gòu)指針 9 3 在程序中定義一個(gè)指針變量 用以保存已打開(kāi)文件所對(duì)應(yīng)的FILE結(jié)構(gòu)在內(nèi)存的地址 此后用戶程序就可用此FILE指針來(lái)實(shí)現(xiàn)對(duì)指定文件的存取操作 定義文件指針變量的一般形式為 FILE 文件結(jié)構(gòu)指針變量名例如 FILE fp 注意 1 只有通過(guò)文件指針 才能調(diào)用相應(yīng)的文件 2 對(duì)文件操作的庫(kù)函數(shù) 函數(shù)原型均在頭文件stdio h中 3 文件操作的過(guò)程 對(duì)磁盤文件的操作必須 先打開(kāi) 再讀寫 最后關(guān)閉 10 打開(kāi) 文件的含義 以某中方式從磁盤上查找指定的文件或創(chuàng)建一個(gè)新文件 1 文件的打開(kāi) fopen 函數(shù)形式 FILE fopen char filename char mode filename 文件名 可以包含驅(qū)動(dòng)器 路徑 文件名 擴(kuò)展名 mode 打開(kāi)方式FILE 返回值1 如果成功打開(kāi) 返回一個(gè)指向被打開(kāi)文件的文件信息區(qū)的起始地址 2 如果打開(kāi)失敗 返回一個(gè)NULL指針 二 標(biāo)準(zhǔn)文件的打開(kāi)操作 11 r 只讀 為輸入打開(kāi)一個(gè)文本文件 w 只寫 為輸出打開(kāi)一個(gè)文本文件 a 追加 向文本文件尾增加數(shù)據(jù) rb 只讀 為輸入打開(kāi)一個(gè)二進(jìn)制文件 wb 只寫 為輸出打開(kāi)一個(gè)二進(jìn)制文件 ab 追加 向二進(jìn)制文件尾增加數(shù)據(jù) r 讀寫 為讀 寫打開(kāi)一個(gè)文本文件 w 讀寫 為讀 寫建立一個(gè)新的文本文件 a 讀寫 為讀 寫打開(kāi)一個(gè)文本文件 rb 讀寫 為讀 寫打開(kāi)一個(gè)二進(jìn)制文件 wb 讀寫 為讀 寫建立一個(gè)新的二進(jìn)制文件 ab 讀寫 為讀 寫打開(kāi)一個(gè)二進(jìn)制文件 2 文件打開(kāi)方式參數(shù) 12 3 在程序開(kāi)始運(yùn)行時(shí) 系統(tǒng)自動(dòng)打開(kāi)以下標(biāo)準(zhǔn)文件 并自動(dòng)地定義了對(duì)應(yīng)的FILE結(jié)構(gòu)指針變量 13 4 說(shuō)明 1 用 r 方式打開(kāi)的文件應(yīng)該已經(jīng)存在 如果不存在則打開(kāi)失敗 2 用 w 方式打開(kāi)的文件 如果不存在該文件 則新建立一個(gè) 如果存在該文件 則在打開(kāi)時(shí)將該文件刪去 然后重新建立一個(gè)新文件 3 如果希望向文件末尾添加新的數(shù)據(jù) 不希望刪除原有數(shù)據(jù) 則應(yīng)該用 a 方式打開(kāi) 4 如果不能實(shí)現(xiàn) 打開(kāi) 的任務(wù) fopen函數(shù)的返回值是一個(gè)NULL空指針 其值在頭文件stdio h中被定義為 14 為增強(qiáng)程序的可靠性 常用下面的方法打開(kāi)一個(gè)文件 if fp fopen 文件名 操作方式 NULL printf cannotopenthisfile n exit 0 關(guān)于exit 函數(shù)1 用法 voidexit 程序狀態(tài)值 2 功能 關(guān)閉已打開(kāi)的所有文件 結(jié)束程序運(yùn)行 返回操作系統(tǒng) 并將 程序狀態(tài)值 返回給操作系統(tǒng) 當(dāng) 程序狀態(tài)值 為 時(shí) 表示程序正常退出 非 值時(shí) 表示程序出錯(cuò)退出 15 三 關(guān)閉標(biāo)準(zhǔn)文件 程序?qū)ξ募淖x寫操作完成后 必須關(guān)閉文件 以保證文件的完整性 格式 fclose 文件指針 1 fclose fp 關(guān)閉fp所指的文件 并返回一個(gè)整數(shù)值 若成功地關(guān)閉了文件 則返回一個(gè)0值 否則返回一個(gè)非零值 2 fcloseall 同時(shí)關(guān)閉程序中已打開(kāi)的多個(gè)文件 標(biāo)準(zhǔn)設(shè)備文件除外 將各文件緩沖區(qū)未裝滿的內(nèi)容寫到相應(yīng)的文件中去 并釋放這些緩沖區(qū) 返回關(guān)閉文件的數(shù)目 16 四 標(biāo)準(zhǔn)文件的讀寫操作 1 字符讀寫函數(shù)fgetc和fputcintfputc intc FILE fp 把字符c寫入fp所指的文件intfgetc FILE fp 從fp所指的文件中讀一個(gè)字符 返回讀得的字符 對(duì)于文本文件 遇文件尾時(shí)返回EOF 其值在頭文件stdio h中被定義為 1 對(duì)于二進(jìn)制文件 用feof fp 判別是否遇文件尾 feof fp 1說(shuō)明遇文件尾 17 例1 函數(shù)fgetc和fputc的使用 include stdio h include conio h main FILE fp1 fp2 charfile1 20 file2 20 charch clrscr printf pleaseinputfile1 sname scanf s file1 fp1 fopen file1 r 18 if fp1 NULL printf cannotopenthisfile n exit 0 printf pleaseinputfile2 sname scanf s file2 fp2 fopen file2 w if fp2 NULL printf cannotopenthisfile n exit 0 ch fgetc fp1 while ch EOF fputc ch fp2 ch fgetc fp1 fclose fp1 fclose fp2 19 2 字符串讀寫函數(shù)fgets和fputs庫(kù)函數(shù)fputs 向fp所指文件輸出一個(gè)字符串1 用法 intfputs constchar str FILE fp 2 功能 把str寫入fp所指的文件 庫(kù)函數(shù)fgets 從文件中讀一個(gè)字符串1 用法 char fgets char str intn FILE fp 2 功能 從fp所指的文件中讀n 1個(gè)字節(jié)到str str最后一個(gè)字節(jié)加 0 如果在讀入規(guī)定長(zhǎng)度之前遇到文件尾EOF或換行符 讀入即結(jié)束 20 例2 函數(shù)fputs和fgets的使用 includemain FILE fp char ch1 Howareyou charch2 20 clrscr fp fopen d infile txt w if fp NULL printf cannotopenthisfile n exit 0 fputs ch1 fp rewind fp 用于把文件指針移到文件的開(kāi)頭 fgets ch2 strlen ch 1 fp printf s ch2 21 3 格式化讀寫函數(shù)fscanf和fprintf形式 fprintf 文件指針 格式控制 變量列表 fscanf 文件指針 格式控制 變量地址列表 除增加 文件指針 外 與scanf 和printf 函數(shù)的功能相似 例如 inti 3 floatf 9 80 fprintf fp 2d 6 2f i f fprintf 函數(shù)的作用是 將變量i按 2d格式 變量f按 6 2f格式 以逗號(hào)作分隔符 輸出到fp所指向的文件中 3 9 80 表示1個(gè)空格 例3 函數(shù)fscanf和fprintf的使用 main FILE fpr fpw intj clrscr fpr fopen d creatr txt r fpw fopen d creatw txt w if fpr NULL fpw NULL printf cannotopenfile n exit 0 definenumber3 include includetypedefstruct longnum charname 10 intage student studenttest number for j 0 j number j fscanf fpr ld s d 23 intfwrite void buffer unsignedsize unsignedcount FILE fp 將buffer地址開(kāi)始的信息 寫入count次 每次寫size字節(jié)至文件fp中 函數(shù)返回值等于實(shí)際寫入的次數(shù) 可能少于count typedefstruct longnum charname 10 intage student studentstu 3 for j 0 j number j fwrite stu j sizeof student 1 fp 4 讀 寫一個(gè)數(shù)據(jù)塊fread fwrite 24 intfread void buffer unsignedsize unsignedcount FILE fp 從文件fp中讀入count次 每次讀size字節(jié) 讀入的信息存在buffer指針指向的緩沖區(qū) 函數(shù)返回值等于實(shí)際讀入的次數(shù) 可能少于count typedefstruct longnum charname 10 intage student studenttest 3 作用 按數(shù)據(jù)項(xiàng) 即數(shù)據(jù)塊 進(jìn)行操作 通過(guò)它們可以方便地對(duì)程序中的數(shù)組 結(jié)構(gòu)體數(shù)據(jù)進(jìn)行整體輸入輸出 函數(shù)操作完成后 將返回讀出或?qū)懭氲臄?shù)據(jù)項(xiàng)項(xiàng)數(shù) for j 0 j number j fread 25 讀 寫函數(shù)的選用原則 從功能角度來(lái)說(shuō) fread 和fwrite 函數(shù)可以完成文件的任何數(shù)據(jù)讀 寫操作 但為方便起見(jiàn) 依下列原則選用 1 讀 寫1個(gè)字符 或字節(jié) 數(shù)據(jù)時(shí) 選用fgetc 和fputc 函數(shù) 2 讀 寫1個(gè)字符串時(shí) 選用fgets 和fputs 函數(shù) 3 整體讀 寫結(jié)構(gòu)體或數(shù)組時(shí) 選用fread 和fwrite 函數(shù) 4 讀 寫1個(gè) 或多個(gè) 含格式的數(shù)據(jù)時(shí) 選用fscanf 和fprintf 函數(shù) 26 文件的操作步驟 1 定義文件指針 FILE 2 建立文件指針和文件名的關(guān)系 fopen 3 進(jìn)行讀或?qū)懖僮?4 關(guān)閉文件 fclose 例如 要將文本文件1中字符復(fù)制到文件2中 定義內(nèi)存變量ch和兩個(gè)文件指針fp1和fp2 反復(fù)執(zhí)行ch fgetc fp1 和fputc ch fp2 語(yǔ)句直到feof fp1 為真止 27 文件中有一個(gè)位置指針 指向當(dāng)前讀寫的位置 我們可以使用有關(guān)函數(shù)來(lái)改變其位置 以完成文件的隨機(jī)讀寫 四 標(biāo)準(zhǔn)文件的定位函數(shù) fseek 函數(shù) 調(diào)用形式為 fseek 文件類型指針 位移量 起始點(diǎn) 說(shuō)明 位移量一般是long型數(shù)據(jù) 起始點(diǎn)用0 1或2表示 函數(shù)的作用 是使文件指針移動(dòng)到所需的位置 若調(diào)用成功 返回值為0 否則返回一個(gè)非零值 28 例如 fseek fp 20L 0 把文件指針從文件開(kāi)頭移到第20個(gè)字節(jié)處 fseek fp 20L 2 把文件指針從文件尾向前移動(dòng)20個(gè)字節(jié) ftell 函數(shù) 調(diào)用形式為 ftell 文件類型指針 函數(shù)的作用 得到文件指針離開(kāi)文件起點(diǎn)的字節(jié)數(shù) 若調(diào)用不成功 返回 1L 表示出錯(cuò) 例如 longi i ftell fp if i 1L printf error n rewind 函數(shù) 調(diào)用形式為 rewind 文件類型指針 函數(shù)的作用 用于把文件指針移到文件的開(kāi)頭 移動(dòng)成功時(shí) 返回值為0 否則返回一個(gè)非零值

注意事項(xiàng)

本文(C語(yǔ)言程序設(shè)計(jì)教程第11章北京郵電大學(xué)出版社.ppt)為本站會(huì)員(max****ui)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!