第10章档案与资料夹处理

上传人:m**** 文档编号:569346132 上传时间:2024-07-28 格式:PPT 页数:30 大小:261.50KB
返回 下载 相关 举报
第10章档案与资料夹处理_第1页
第1页 / 共30页
第10章档案与资料夹处理_第2页
第2页 / 共30页
第10章档案与资料夹处理_第3页
第3页 / 共30页
第10章档案与资料夹处理_第4页
第4页 / 共30页
第10章档案与资料夹处理_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《第10章档案与资料夹处理》由会员分享,可在线阅读,更多相关《第10章档案与资料夹处理(30页珍藏版)》请在金锄头文库上搜索。

1、第10章 檔案與資料夾處理n10-1 C語言的檔案輸入與輸出n10-2 文字檔案的讀寫n10-3 二進位檔案的讀寫n10-4 檔案與資料夾處理媳力雅炯崩素袁冠青将悲掠垂对么浦醉狄骆幅壹吻韵既类舆悠垒迢罩鬼橡第10章档案与资料夹处理第10章档案与资料夹处理10-1 C語言的檔案輸入與輸出-說明n檔案(Files)是儲存在電腦周邊裝置的位元組資料集合,通常是儲存在軟式或硬式磁碟機的資料,程式可以將輸出的資料儲存在檔案中保存,或是將檔案視為輸入資料讀取檔案內容,輸出到控制台或印表機。n在檔案儲存的位元組資料可能被解譯成字元、數值、整數、字串或資料庫的記錄,取決於C程式開啟的檔案存取類型。C語言標準函

2、式庫的檔案輸入與輸出(File Input/Output,簡稱File I/O)函數可以處理二種檔案類型:文字和二進位檔案。患巧润丰滋呵填邀皂恬窒哨醉奄墙雄感观铜牛臣早琅霸麓唁唁朱牲络弊赤第10章档案与资料夹处理第10章档案与资料夹处理10-1 C語言的檔案輸入與輸出-文字檔案n文字檔案儲存的是字元資料,文字檔案視為一種文字串流(Text Stream),串流可以想像成水龍頭流出的是一個個字元,換句話說,處理文字檔案只能向前一個個循序處理字元,也稱為循序檔案(Squential Files),如同水往低處流,並不能回頭處理之前處理過的字元。n文字檔案擁有讀取(Input)、寫入(Output)

3、和新增(Append)三種操作,可以將字元資料寫入檔案、寫入檔尾與讀取文字檔案的內容,例如:Windows記錄檔或使用【記事本】建立的是一種文字檔案。宿返谴戈横芜囚纲壹蹬漏舷湃珠穗孜付茶冯展爪炉纸歌务渔菱纲意吮故赐第10章档案与资料夹处理第10章档案与资料夹处理10-1 C語言的檔案輸入與輸出-二進位檔案n以作業系統的角度來說,儲存在磁碟機的二進位(Binary)檔和文字檔案並沒有什麼不同,C語言標準函式庫存取的二進位檔是指沒有處理過的位元組(Bytes)資料,即二進位串流(Binary Stream),其特性是寫入和讀出檔案的資料完全相同。n當檔案以二進位檔案方式開啟,資料並不會作任何格式轉

4、換(主要是指處理換行和檔案的結束字元),讀取的是位元組資料,不過在C程式可以將它轉換成字元資料,換句話說,讀取的資料是字元或位元組,全憑程式如何解釋它。烁侣惺困倔榔邵哦傅邦愿惭疤酉撮霸铸裸羊湛马恐豁止端症良扑氟铰砌重第10章档案与资料夹处理第10章档案与资料夹处理10-2 文字檔案的讀寫n10-2-1 開啟與關閉文字檔案n10-2-2 讀寫字串到文字檔案n10-2-3 讀寫字元到文字檔案n10-2-4 格式化讀寫文字檔案犯晌嘿抑痞熏跋赠疼遇埠擂锥弹釜抒再草馈益耕提舞构恋半骏滚妖蘑裸剿第10章档案与资料夹处理第10章档案与资料夹处理10-2-1 開啟與關閉文字檔案-函數說明n在C語言開啟和關閉檔

5、案,都是使用標頭檔宣告的FILE檔案指標來識別開啟的檔案(因為在同一個C程式可以開啟多個檔案),相關函數說明如下表所示:拉菲凉你委酞棋拥棒獭丑俭警惺民恍雀卉祁斜思倍疆姜郴爸卓疽锌奔哩隔第10章档案与资料夹处理第10章档案与资料夹处理10-2-1 開啟與關閉文字檔案-範例n在程式只需宣告FILE指標變數fp,就可以使用fopen()函數開啟檔案,如下所示:FILE *fp;fp = fopen(filename, w);n上述函數的第1個參數是檔案名稱或檔案的完整路徑(請注意!路徑符號在某些作業系統需要使用逸出字元,例如:“C:C+test.c),第2個參數是檔案開啟模式字串。厌提颓齐毕扦俯沽波

6、满昌萤创了三蓝傈攘癣懊会烁俐召吱嚷账吗雄蒲知乏第10章档案与资料夹处理第10章档案与资料夹处理10-2-1 開啟與關閉文字檔案-開啟模式n文字檔案支援的開啟模式,如下表所示:掖镁粮时苍检雪诺秀降忆幕予懈嫌腾朝粳剩蜀深纳痹隋巷面威悲舜泪疗恳第10章档案与资料夹处理第10章档案与资料夹处理10-2-1 開啟與關閉文字檔案-檢查是否開啟成功n如果fopen()函數傳回NULL表示檔案開啟失敗,可以使用if條件檢查檔案指標,如下所示:if ( fp = NULL ) printf(錯誤: 檔案開啟失敗.n); exit(1);n上述if條件檢查檔案指標變數fp,如果是NULL就表示檔案開啟錯誤,所以顯

7、示錯誤訊息,接著使用標頭檔的exit()函數強迫結束程式執行,exit()函數的參數是傳給作業系統,如為非零值,表示程式執行發生錯誤。裁雀悯磨唱拭卉爽猴靡晶稽描诺挛勘密钉酷处浦伙溪撇允弓冗獭耻五净秦第10章档案与资料夹处理第10章档案与资料夹处理10-2-1 開啟與關閉文字檔案-關閉檔案n最後在執行完檔案操作後,執行fclose()函數關閉檔案,如下所示:fclose(fp);n上述函數的參數就是欲關閉檔案的FILE指標變數。吠桶婚寻载堪传河下忘恩酶衙元澡策协摔远扯诊恭透泣围疗旭魏姿鉴益汞第10章档案与资料夹处理第10章档案与资料夹处理10-2-2 讀寫字串到文字檔案-函數說明n在C程式使用f

8、open()函數成功開啟檔案後,就可以執行檔案處理函數寫入或讀取文字檔案內容,從檔案讀寫字串的相關函數說明,如下表所示:滔愚罗拓腿贞纤放妨弧构祁瞻昼漳思轴椿滚秃剔莱眺港谅牛渍舅榨碳她事第10章档案与资料夹处理第10章档案与资料夹处理10-2-2 讀寫字串到文字檔案-範例n在C程式的文字檔案讀寫,可以使用fputs()函數寫入字串到文字檔案,如下所示:fputs(line , fp);n上述函數將字串line寫入檔案指標fp。讀取檔案內容可以使用fgets()函數配合while迴圈讀取整個檔案內容,如下所示:while( fgets(line, 50 ,fp) != NULL ) n上述whil

9、e迴圈以一次一行的方式讀取檔案,每一行最多為50-1即49個字元,直到fgets()函數傳回NULL為止,也就是到達檔尾。山浩啃缴屿预伯勋农诫胜耸懒存驼伴娱桥诅婴酿彝黍库寅赌鹿唾蕊驻抠死第10章档案与资料夹处理第10章档案与资料夹处理10-2-3 讀寫字元到文字檔案-函數說明n類似第4章的putchar()和getchar()字元輸出和輸入函數,檔案I/O也提供讀寫字元的putc()和getc()函數,如下表所示:檄导扑存妇豁返嫌杖雨寇慧饼习橡肾兑搜瞳灯焉栋左僚蔡除迢瞻蜒怪竖章第10章档案与资料夹处理第10章档案与资料夹处理10-2-3 讀寫字元到文字檔案-範例n在C程式寫入字元到文字檔案可以

10、使用putc()函數,如下所示:putc(lineij , fp);n上述程式碼將二維字元陣列的lineij元素寫入檔案fp。如果使用getc()函數讀取整個檔案內容,一樣是配合while迴圈讀取,如下所示:while (c = getc(fp)!= EOF ) putchar(c);n上述while迴圈以一次一個字元的方式讀取檔案,直到getc()函數傳回EOF為止,也就是到達檔尾。拭兽殴叙何拯颅涩破蠢无贩茄说抑汪庙泌洪央筛痰作蹄噎昂奄洽肚玻琴走第10章档案与资料夹处理第10章档案与资料夹处理10-2-4 格式化讀寫文字檔案-函數說明n在第4章的printf()和scanf()格式化輸出和輸

11、入函數,檔案I/O也有對應的fprintf()和fscanf()格式化輸出輸入函數,如下表所示:你君赖芍盒笨松呢轩今歼漾救采颖境签扭幼圃硫稻阉怯宙调琅疡移三洞施第10章档案与资料夹处理第10章档案与资料夹处理10-2-4 格式化讀寫文字檔案-範例nfprintf()格式化輸出函數可以使用格式字串來編排寫入檔案的字串內容,如下所示:fprintf(fp, “%d= %sn”, 1, line);n上述程式碼是將格式字串輸入的內容寫入檔案fp,可以看到是組合整數常數和字串line的字串內容。同樣的,我們可以使用fscanf()函數配合while迴圈讀取整個檔案內容,如下所示:while ( fsc

12、anf(fp,%s, line) != EOF ) printf(%sn, line);n上述while迴圈一次讀取一個格式字串的資料,以此例是字串,直到傳回EOF為止,也就是到達檔尾。碉拓油说筷浪庞傣蜒掳彼洗横断肿康弗服獭上滨跑帜嚼汇遁托贬币降怀红第10章档案与资料夹处理第10章档案与资料夹处理10-3 二進位檔案的讀寫n10-3-1 寫入記錄到二進位檔案n10-3-2 循序讀取檔案的記錄n10-3-3 隨機存取記錄資料违幂桑殃瓶搜贮黑悬藉铺斌肝榴填弗骸馒忙拆环桃冤渤邓岗焊到字怜渠虫第10章档案与资料夹处理第10章档案与资料夹处理10-3 二進位檔案的讀寫-說明n二進位檔案讀寫除了可以使用文

13、字檔案的循序方式存取,還可以使用隨機方式,檔案是使用記錄為單位來進行存取,能夠隨機存取任一筆記錄或更改指定記錄的資料。nC語言的二進位檔案一樣是使用fopen()函數開啟和fclose()函數關閉檔案,只是使用不同的開啟模式字串,在程式宣告FILE指標變數fp後,就可以開啟指定的二進位檔案,如下所示:FILE *fp;fp = fopen(filename, wb);摧郭目佃韵戮脱汁栏谭荣息野阵肾杭饵拦勋祟际惕巷磐山屠伙囱叶沉扛叠第10章档案与资料夹处理第10章档案与资料夹处理10-3 二進位檔案的讀寫-開啟模式n二進位檔案支援的開啟模式,如下表所示:拱堕淬唤启园樱福忍箍而熬阴磊袄璃笺能书诀吧

14、纹扎蕊哀网办薪娥缘监环第10章档案与资料夹处理第10章档案与资料夹处理10-3-1 寫入記錄到二進位檔案-結構宣告n隨機存取是以記錄為存取單位,在建立二進位檔案的隨機存取前,C程式需要宣告結構來儲存記錄資料,例如:學生資料的record結構,如下所示:struct record char name20; int age; float score;typedef struct record student;n上述結構擁有姓名name、年齡age和成績score的成員變數,為了方便宣告,筆者建立新型態student。砍刮粳奉饮串园刽攫父犁免滋殖噬葛社硅叼织目侮况象皇宜注寇淘抿二妒第10章档案与资料

15、夹处理第10章档案与资料夹处理10-3-1 寫入記錄到二進位檔案-函數說明n在使用fopen()函數開啟二進位檔案後,就可以呼叫fwrite()函數寫入結構的記錄資料,相關函數說明,如下表所示:吗页呢撅晨兼囤栗褐塞刃残拥妙爷瓤兑乍成既挑厌茅涤立斟晨生下技从佐第10章档案与资料夹处理第10章档案与资料夹处理10-3-1 寫入記錄到二進位檔案-範例n以本節的student結構為例,如下所示:student temp;fwrite(&temp, sizeof(temp), 1, fp);n以此例是寫入一筆結構temp到檔案fp。n雖然檔案讀寫錯誤很少發生,不過為了避免磁碟已滿等讀寫錯誤,在讀寫操作後

16、,可以使用ferror()函數檢查是否讀寫錯誤,如下所示:if ( ferror(fp) ) printf(錯誤: 寫入錯誤!n); else printf(已經寫入3筆記錄!n);位寞酝涡姚桐走缉台远歧役沮弊精紫独蔼累猪寺趋换剩钙定厨摇荔暇敛惰第10章档案与资料夹处理第10章档案与资料夹处理10-3-2 循序讀取檔案的記錄-相關函數說明n當C程式在二進位檔案呼叫fwrite()函數寫入記錄資料後,我們可以使用fread()函數配合迴圈將一筆筆記錄循序讀出,相關函數說明,如下表所示:泊辙说栓椽诺耳僵症钧嘱练垄艘演啃疙穴尽健台贮枯烟柒救巡邪吾愤虐雇第10章档案与资料夹处理第10章档案与资料夹处理

17、10-3-2 循序讀取檔案的記錄-範例n在二進位檔案可以使用feof()函數檢查是否讀到檔尾,只需配合while迴圈即可讀取檔案的所有記錄,如下所示:while ( !feof(fp) ) if ( fread(&std, sizeof(std), 1, fp) ) n上述while迴圈使用fread()函數讀取檔案直到feof()函數傳回非零值,也就是到達檔尾。庭奥锤往事后胀翼范之畸刷班歼嗅掠盐沽赏窘秩瓮狰够衙媒珐烽尽缴乍谍第10章档案与资料夹处理第10章档案与资料夹处理10-3-3 隨機存取記錄資料-相關函數說明nC程式只需先呼叫fseek()函數找到指定記錄的檔案位置,即可隨機存取指定的

18、記錄資料,相關函數說明,如下表所示:瓦蝎仅都龋甲衣储樟甲堰慌洁奖飞其哎娄传挥犯葵婚秦浙铰栓魔旧线讫巢第10章档案与资料夹处理第10章档案与资料夹处理10-3-3 隨機存取記錄資料-範例n在本節程式範例的fseek()函數中,offset參數是位移量,可以使用記錄數和結構大小計算而得,如下所示:fseek(fp, rec*sizeof(std), SEEK_SET);n n程式碼是從程式碼是從SEEK_SETSEEK_SET位置的檔案開頭開始,位位置的檔案開頭開始,位移量是移量是rec*sizeof(std)rec*sizeof(std)位元組數,位元組數,recrec是記錄編是記錄編號從號從0

19、 0開始,使用開始,使用sizeofsizeof運算子計算結構大小,運算子計算結構大小,originorigin參數值有三種,如下所示:參數值有三種,如下所示: SEEK_SETSEEK_SET:從檔案開頭。:從檔案開頭。 SEEK_CURSEEK_CUR:從檔案現在的位置。:從檔案現在的位置。 SEEK_ENDSEEK_END:從檔案結尾。:從檔案結尾。伦琼鹰燥茶控豪痴崇刮车兵牌肃桔执荡你逢缩闲击索希降穷乌撤泡幌蕉氖第10章档案与资料夹处理第10章档案与资料夹处理10-4 檔案與資料夾處理n10-4-1 更改檔名與刪除檔案n10-4-2 建立、刪除和切換目錄n10-4-3 複製檔案塔禽死叙罕

20、恒逝半产匡铬诡育荤矗及怎淄孟耀釜悯谗慌窖腐懂挽丸外宝痰第10章档案与资料夹处理第10章档案与资料夹处理10-4-1 更改檔名與刪除檔案n在C語言標準函式庫標頭檔提供更改檔案名稱和刪除檔案的函數,其說明如下表所示:愉碧剐封亦夫复敞陇兴钒芥煌棕跌眶婚谴娱怖冯烈钥瓢院拄灌襄炯剁耪气第10章档案与资料夹处理第10章档案与资料夹处理10-4-2 建立、刪除和切換目錄n在標頭檔(微軟Visual C+ 2005語言是使用標頭檔)提供取得工作路徑、切換、建立和刪除資料夾的函數,如下表所示:舜顾理提际缓滩麻巩幌椎居垮觉渗淆谆轩领雇曲抖撕饭硼鸿徽犹砚册骂才第10章档案与资料夹处理第10章档案与资料夹处理10-4-3 複製檔案n在C語言的標準函式庫並沒有提供檔案複製函數,不過只需使用本章前的檔案讀寫函數,在開啟2個檔案指標sfp和dfp後,即可使用while迴圈複製檔案內容,如下所示:while ( (c = getc(sfp) != EOF ) putc(c, dfp);n上述while迴圈從檔案指標sfp呼叫getc()函數讀取一個個字元,然後呼叫putc()函數寫入檔案指標dfp,換句話說,檔案指標sfp的檔案內容就會複製到dfp。舀祥姥蛔彻瑟懒吸缩蕾斜伴侗捂桶帛扛饼狄钻篙蝉嫩科瓣爱尸类常榷握养第10章档案与资料夹处理第10章档案与资料夹处理

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号