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

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

《756第10章 档案与资料夹处理.ppt》由会员分享,可在线阅读,更多相关《756第10章 档案与资料夹处理.ppt(30页珍藏版)》请在三一办公上搜索。

1、第10章 檔案與資料夾處理,10-1 檔案的基礎10-2 文字檔案的讀寫10-3 二進位檔案的讀寫10-4 檔案與資料夾處理,10-1 檔案的基礎-說明,檔案(Files)是儲存在電腦周邊裝置的位元組資料集合,通常是儲存在軟硬磁碟機的資料,程式可以將輸出的資料儲存在檔案中保存,或是將檔案視為輸入資料讀取檔案內容,檔案的位元組資料可能被解譯成字元、數值、整數、字串或資料庫的記錄,取決於程式開啟的檔案存取類型。C語言標準函式庫的檔案I/O(File Input/Output)函數可以處理二種檔案類型:文字和二進位檔案。,10-1 檔案的基礎-文字檔案(Text Files),文字檔案儲存的是字元資

2、料,文字檔案視為一種文字串流(Text Stream),串流可以想像成水龍頭流出的是一個個字元,也就是說處理文字檔案只能向前一個個循序處理字元,也稱為循序檔案(Squential Files),如同水往低處流,並不能回頭處理之前處理過的字元。文字檔案的處理就是讀取(Input)、寫入(Output)和新增(Append)三種方式,將字元資料寫入檔案與讀取文字檔案的內容。,10-1 檔案的基礎-二進位檔案(Binary Files),儲存在磁碟機的二進位(Binary)檔和文字檔案並沒有什麼不同,C語言標準函式庫存取的二進位檔是指沒有處理過的位元組(Bytes)資料,這種二進位串流(Binary

3、 Stream)的特性是寫入和讀出檔案的資料完全相同。二進位檔案可以依需求以循序或隨機存取(Random Access)方式進行處理,隨機處理可以將檔案視為一個儲存在記憶體的陣列或結構陣列,只需移動檔案指標(File Pointer)到存取的位置,就可以存取資料,如同在陣列使用索引存取陣列元素。,10-2 文字檔案的讀寫,10-2-1 開啟與關閉文字檔案10-2-2 讀寫字串到文字檔案10-2-3 讀寫字元到文字檔案10-2-4 格式化讀寫文字檔案,10-2-1 開啟與關閉文字檔案-函數,10-2-1 開啟與關閉文字檔案-範例,在程式只需宣告FILE指標變數fp,就可以使用fopen()函數開

4、啟檔案,如下所示:FILE*fp;fp=fopen(filename,w);函數的第1個參數是檔案名稱或檔案的完整路徑,第2個參數是檔案開啟模式字串,文字檔案支援的開啟模式。,10-2-1 開啟與關閉文字檔案-開啟模式,10-2-1 開啟與關閉文字檔案-檢查檔案是否開啟,fopen()函數傳回NULL表示檔案開啟失敗,可以使用if條件檢查檔案指標,如下所示:if(fp=NULL)printf(檔案開啟失敗.n);exit(1);最後在執行完檔案操作後,請執行fclose()函數關閉檔案,如下所示:fclose(fp);,10-2-2 讀寫字串到文字檔案-函數,10-2-2 讀寫字串到文字檔案-

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

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

7、取,能夠隨機存取任一筆記錄或更改指定記錄的資料。,10-3 二進位檔案的讀寫-開啟,C語言的二進位檔案也是使用fopen()函數開啟和fclose()函數關閉檔案,只是使用不同的開啟模式字串,在程式宣告FILE指標變數fp後,就可以開啟指定的檔案,如下所示:FILE*fp;fp=fopen(filename,wb);函數開啟檔案filename,第2個參數的檔案開啟模式多了字元b,表示開啟的是二進位檔案。,10-3 二進位檔案的讀寫-開啟模式,10-3-1 寫入記錄到二進位檔案-結構,隨機存取是以記錄為存取單位,在建立二進位檔案的隨機存取前,C程式需要宣告結構來儲存資料,例如:學生資料的rec

8、ord結構,如下所示:struct record char name20;int age;float score;typedef struct record student;,10-3-1 寫入記錄到二進位檔案-函數,10-3-1 寫入記錄到二進位檔案-範例,以student結構為例,如下所示:student temp;fwrite(程式碼建立結構變數temp,在指定成員變數的值後,呼叫fwrite()函數寫入此結構,&temp取得結構位址,sizeof運算子計算結構大小,以此例就是寫入一筆結構temp到檔案fp。,10-3-2 循序讀取檔案的記錄-函數,10-3-2 循序讀取檔案的記錄-使用

9、,二進位檔案可能儲存多筆記錄,feof()函數是用來檢查是否讀到檔尾,在配合while迴圈後,就可以讀取檔案的所有記錄,如下所示:while(!feof(fp)while迴圈讀取檔案直到feof()函數傳回非零值,也就是到達檔尾。,10-3-3 隨機存取記錄資料-函數,10-3-3 隨機存取記錄資料-使用,fseek()函數的offset參數是位移量,可以使用記錄數和結構大小計算而得,如下所示:fseek(fp,rec*sizeof(std),SEEK_SET);程式碼是從SEEK_SET位置的檔案開頭開始,位移量是rec*sizeof(std)位元組數,其中rec是記錄編號從0開始,使用si

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号