756第10章 档案与资料夹处理

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

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

1、第10章 檔案與資料夾處理n n10-1 檔案的基礎n n10-2 文字檔案的讀寫n n10-3 二進位檔案的讀寫n n10-4 檔案與資料夾處理10-1 檔案的基礎-說明n n檔檔案案(FilesFiles)是是儲儲存存在在電電腦腦周周邊邊裝裝置置的的位位元元組組資資料料集集合合,通通常常是是儲儲存存在在軟軟硬硬磁磁碟碟機機的的資資料料,程程式式可可以以將將輸輸出出的的資資料料儲儲存存在在檔檔案案中中保保存存,或或是是將將檔檔案案視視為為輸輸入入資資料料讀讀取取檔檔案案內內容容,檔檔案案的的位位元元組組資資料料可可能能被被解解譯譯成成字字元元、數數值值、整整數數、字字串串或或資料庫的記錄,取

2、決於程式開啟的檔案存取類型。資料庫的記錄,取決於程式開啟的檔案存取類型。n nC C語語 言言 標標 準準 函函 式式 庫庫 的的 檔檔 案案 I/I/OO ( FileFile Input/OutputInput/Output)函函數數可可以以處處理理二二種種檔檔案案類類型型:文文字和二進位檔案。字和二進位檔案。10-1 檔案的基礎-文字檔案(Text Files)n n文字檔案儲存的是字元資料,文字檔案視為一種文字檔案儲存的是字元資料,文字檔案視為一種文字串流(文字串流(Text StreamText Stream),串流可以想像串流可以想像成水龍頭流出的是一個個字元,也就是說處理文成水龍

3、頭流出的是一個個字元,也就是說處理文字檔案只能向前一個個循序處理字元,也稱為字檔案只能向前一個個循序處理字元,也稱為循序檔案(循序檔案(SquentialSquential Files Files),如同水往低處如同水往低處流,並不能回頭處理之前處理過的字元。流,並不能回頭處理之前處理過的字元。n n文字檔案的處理就是讀取(文字檔案的處理就是讀取(InputInput)、)、寫入寫入(OutputOutput)和新增(和新增(AppendAppend)三種方式,將字三種方式,將字元資料寫入檔案與讀取文字檔案的內容。元資料寫入檔案與讀取文字檔案的內容。10-1 檔案的基礎-二進位檔案(Binar

4、y Files)n n儲存在磁碟機的二進位(儲存在磁碟機的二進位(BinaryBinary)檔和文字檔案並檔和文字檔案並沒有什麼不同,沒有什麼不同,C C語言標準函式庫存取的二進位檔語言標準函式庫存取的二進位檔是指沒有處理過的是指沒有處理過的位元組(位元組(BytesBytes)資料資料,這,這種種二進位串流(二進位串流(Binary StreamBinary Stream)的特性是的特性是寫入和讀出檔案的資料完全相同。寫入和讀出檔案的資料完全相同。n n二進位檔案可以依需求以循序或二進位檔案可以依需求以循序或隨機存取隨機存取(Random AccessRandom Access)方式進行處理

5、,隨機處理可方式進行處理,隨機處理可以將檔案視為一個儲存在記憶體的陣列或結構陣列,以將檔案視為一個儲存在記憶體的陣列或結構陣列,只需移動只需移動檔案指標(檔案指標(File PointerFile Pointer)到存取的到存取的位置,就可以存取資料,如同在陣列使用索引存取位置,就可以存取資料,如同在陣列使用索引存取陣列元素。陣列元素。10-2 文字檔案的讀寫n n10-2-1 開啟與關閉文字檔案n n10-2-2 讀寫字串到文字檔案n n10-2-3 讀寫字元到文字檔案n n10-2-4 格式化讀寫文字檔案10-2-1 開啟與關閉文字檔案-函數10-2-1 開啟與關閉文字檔案-範例n n在程

6、式只需宣告FILE指標變數fp,就可以使用fopen()函數開啟檔案,如下所示:FILE *FILE *fpfp; ;fpfp = = fopen(filenamefopen(filename, w);, w);n n函數的第1個參數是檔案名稱或檔案的完整路徑,第2個參數是檔案開啟模式字串,文字檔案支援的開啟模式。10-2-1 開啟與關閉文字檔案-開啟模式10-2-1 開啟與關閉文字檔案-檢查檔案是否開啟n nfopenfopen()()函數傳回函數傳回NULLNULL表示檔案開啟失敗,可以表示檔案開啟失敗,可以使用使用if if條件檢查檔案指標,如下所示:條件檢查檔案指標,如下所示:if (

7、 if ( fpfp = NULL ) = NULL ) printfprintf(檔案開啟失敗檔案開啟失敗.n);n); exit(1); exit(1); n n最後在執行完檔案操作後,請執行最後在執行完檔案操作後,請執行fclosefclose()()函數函數關閉檔案,如下所示:關閉檔案,如下所示:fclose(fpfclose(fp););10-2-2 讀寫字串到文字檔案-函數10-2-2 讀寫字串到文字檔案-範例n n使用fgets()函數讀取整個檔案內容,可以配合while迴圈來讀取,如下所示:while( while( fgets(linefgets(line, 50 , 50

8、,fpfp) != NULL ) != NULL ) n nwhile迴圈以一次一行的方式讀取檔案,每一行最多為50-1即49個字元,直到fgets()函數傳回NULL為止,也就是到達檔尾。10-2-3 讀寫字元到文字檔案-函數10-2-3 讀寫字元到文字檔案-範例n n使用getc()函數讀取整個檔案內容,一樣可以配合while迴圈來讀取,如下所示:while (c = while (c = getc(fpgetc(fp)!= EOF )!= EOF ) putchar(cputchar(c););n nwhile迴圈以一次一個字元的方式讀取檔案,直到getc()函數傳回EOF為止,也就是到

9、達檔尾。10-2-4 格式化讀寫文字檔案-函數10-2-4 格式化讀寫文字檔案-範例n n使用fscanf()函數配合while迴圈就可以讀取整個檔案的內容,如下所示:while ( while ( fscanf(fp,%sfscanf(fp,%s, line) != EOF ), line) != EOF ) printf(%snprintf(%sn, line);, line);n nwhile迴圈以一次讀取一個格式字串的資料,以此例是字串,直到傳回EOF為止,也就是到達檔尾。10-3 二進位檔案的讀寫n n10-3-1 寫入記錄到二進位檔案n n10-3-2 循序讀取檔案的記錄n n10

10、-3-3 隨機存取記錄資料10-3 二進位檔案的讀寫-說明n n二進位檔案讀寫除了可以使用文字檔案的循序方式存取,還可以使用隨機方式,以記錄為單位進行存取,能夠隨機存取任一筆記錄或更改指定記錄的資料。10-3 二進位檔案的讀寫-開啟n nC C語言的二進位檔案也是使用語言的二進位檔案也是使用fopenfopen()()函數開啟和函數開啟和fclosefclose()()函數關閉檔案,只是使用不同的開啟模式字串,函數關閉檔案,只是使用不同的開啟模式字串,在程式宣告在程式宣告FILEFILE指標變數指標變數fpfp後,就可以開啟指定後,就可以開啟指定的檔案,如下所示:的檔案,如下所示:FILE *

11、FILE *fpfp; ;fpfp = = fopen(filenamefopen(filename, , wbwb););n n函數開啟檔案函數開啟檔案filenamefilename,第第2 2個參數的檔案開啟個參數的檔案開啟模式多了字元模式多了字元 bb,表示開啟的是二進位檔案。表示開啟的是二進位檔案。10-3 二進位檔案的讀寫-開啟模式10-3-1 寫入記錄到二進位檔案-結構n n隨機存取是以記錄為存取單位,在建立二進位檔案的隨機存取前,C程式需要宣告結構來儲存資料,例如:學生資料的record結構,如下所示:structstruct record record char name20

12、; char name20; intint age; age; float score; float score;typedeftypedef structstruct record student; record student;10-3-1 寫入記錄到二進位檔案-函數10-3-1 寫入記錄到二進位檔案-範例n n以student結構為例,如下所示:student temp;student temp;fwrite(&tempfwrite(&temp, , sizeof(tempsizeof(temp), 1, ), 1, fpfp););n n程式碼建立結構變數temp,在指定成員變數的值後

13、,呼叫fwrite()函數寫入此結構,&temp取得結構位址,sizeof運算子計算結構大小,以此例就是寫入一筆結構temp到檔案fp。10-3-2 循序讀取檔案的記錄-函數10-3-2 循序讀取檔案的記錄-使用n n二進位檔案可能儲存多筆記錄,feof()函數是用來檢查是否讀到檔尾,在配合while迴圈後,就可以讀取檔案的所有記錄,如下所示:while ( !while ( !feof(fpfeof(fp) ) ) n nwhile迴圈讀取檔案直到feof()函數傳回非零值,也就是到達檔尾。10-3-3 隨機存取記錄資料-函數10-3-3 隨機存取記錄資料-使用n nfseekfseek()

14、()函數的函數的offsetoffset參數是位移量,可以使用記參數是位移量,可以使用記錄數和結構大小計算而得,如下所示:錄數和結構大小計算而得,如下所示:fseek(fpfseek(fp, , recrec* *sizeof(stdsizeof(std), SEEK_SET);), SEEK_SET);n n程式碼是從程式碼是從SEEK_SETSEEK_SET位置的檔案開頭開始,位位置的檔案開頭開始,位移量是移量是recrec* *sizeof(stdsizeof(std) )位元組數,其中位元組數,其中recrec是記是記錄編號從錄編號從0 0開始,使用開始,使用sizeofsizeof運

15、算子計算結構大小,運算子計算結構大小,即記錄尺寸,即記錄尺寸,originorigin參數值有三種,如下:參數值有三種,如下: SEEK_SETSEEK_SET:從檔案開頭。從檔案開頭。 SEEK_CURSEEK_CUR:從檔案現在的位置。從檔案現在的位置。 SEEK_ENDSEEK_END:從檔案結尾。從檔案結尾。10-4 檔案與資料夾處理n n10-4-1 更改檔名與刪除檔案n n10-4-2 建立、刪除和切換目錄n n10-4-3 複製檔案10-4-1 更改檔名與刪除檔案10-4-2 建立、刪除和切換目錄10-4-3 複製檔案n nC語言的標準函式庫並沒有提供複製檔案的函數,不過只需使用本章前說明的檔案讀寫函數,在開啟2個檔案指標sfp和dfp後,使用while迴圈就可以複製檔案內容,如下所示:while ( (c = while ( (c = getc(sfpgetc(sfp) != EOF ) != EOF ) putc(cputc(c, , dfpdfp););

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

最新文档


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

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