1 / 15

將資料存入磁碟或由磁碟取出資料的方式 , 稱為檔案存取處理。 C 語言的檔案處理 C++ 語言的檔案處理

檔案. 將資料存入磁碟或由磁碟取出資料的方式 , 稱為檔案存取處理。 C 語言的檔案處理 C++ 語言的檔案處理. 檔案的種類. 檔案依資料存取方式可分為循序檔與隨機檔 , 分別說明如下: 循序檔 採用整批儲存與整批取出資料的方式稱為循序檔 , 此種存取模式較適合文書檔的儲存。例如 , 當我們編輯一封書信時 , 通常都是整篇儲存 , 編輯時亦是整篇取出修改後全部儲存。 隨機檔

adriel
Download Presentation

將資料存入磁碟或由磁碟取出資料的方式 , 稱為檔案存取處理。 C 語言的檔案處理 C++ 語言的檔案處理

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 檔案 將資料存入磁碟或由磁碟取出資料的方式, 稱為檔案存取處理。 • C語言的檔案處理 • C++語言的檔案處理

  2. 檔案的種類 檔案依資料存取方式可分為循序檔與隨機檔, 分別說明如下: • 循序檔 採用整批儲存與整批取出資料的方式稱為循序檔, 此種存取模式較適合文書檔的儲存。例如, 當我們編輯一封書信時, 通常都是整篇儲存, 編輯時亦是整篇取出修改後全部儲存。 • 隨機檔 可以指定資料位置的存取方式稱為隨機檔, 此種存取模式較適合數值資料的儲存。例如, 你可能從一堆學生資料中讀取或修改某一個人的成績。又例如, 104 的電話查號, 亦是從一大堆資料中讀取一筆資料, 此時當然沒有必要將全部資料全部載入記憶體, 而是依照自己的需求讀取指定位置的某一或某些筆資料即可, 此時即需使用隨機檔。

  3. 檔案處理的演進 • C 語言 程序導向的C 語言是採用fopen、fclose 、fprintf、fscanf 及feof 等函式處理循序或隨機檔案, 請看15-1 節。 • C + + 語言 物件導向的C++ 語言是採用ifstream 、ofstream 等類別的方式處理循序或隨機檔案, 請看15-2 節。 • C++ Builder C++ Builder 則是採用資料庫元件的方式處理檔案, 由於資料庫元件已有長足的進步, 所以本書於第16 ~22 章大力介紹這些資料庫元件。關於C 與C++ 的檔案處理則僅以循序檔簡介, 讀者可於此體會這些程式語言的演進。

  4. 15 -1 C 語言的檔案處理 • C 語言常用的檔案處理函式, 分別是fopen 、fclose 、fprintf 、fscanf 、feof、fseek 、fwrite 、fread、fileno 、filelength 及sizeof 等函式, 使用這些函式前應匯入stdio.h, 如下所示。 #include <stdio.h>

  5. fopen • 當您欲從磁碟存取資料時, 首先必須以fopen 開啟指定的檔案, 其函式原型共有兩種多載如下, 本單元僅舉例說明第一種多載。 • 其中mode 是開檔的模式, 所有模式如下圖所示。 • 例如, 以下敘述可開啟test1.txt, 並準備寫入資料。 FILE *outf; outf=fopen("c:\\BCBbook\\ch15\\test1.txt", "w");

  6. fprintf • 當您欲寫入資料至檔案時, 只要重覆使用fprintf 即可寫入資料, 其函式原型如下圖。 • format format 是資料的格式, 詳細如下圖。

  7. Conversion-type character 所有的資料均應格式化才可存檔, 其格式化字元如下圖。 • 例如, 以下敘述可寫入字串, 其中outf 是開檔時所傳回的檔案指標。 fprintf(outf, "%s", "ABC"); • 以下敘述可寫入整數。 fprintf(outf, "%d", 25); • 以下敘述, 可同時寫入一個字串, 一個整數及一個浮點數。 fprint(outf, "%s %d %f", " 子堯", 90, 25.5);

  8. fscanf • 當您欲從檔案讀取資料時, 只要重覆使用fscanf 即可讀取資料, 其函式原型如下, 使用方式同fprintf 。

  9. fclose • 將緩衝區的資料寫入磁碟, 其語法如下: int fclose(file *stream); • 當寫入成功時, 傳回0。

  10. feof • 傳回檔案指標是否已在檔案的最後面, 若是則傳回非零值;若否則傳回0。其語法如下: int feof(File *stream);

  11. 範例15-1a • 請寫一個程式, 可以將RichEdit 元件的內容存入檔案且能將文字檔載入RichEdit 。

  12. 1 5 -2 C ++ 語言的檔案處理 • 眾所皆知, C++ 是物件導向的程式語言, 所以在檔案的處理亦實作了許多關於檔案的類別, 例如ofstream 、ifstream 與fstream 等類別。若要使用這些類別, 則應先匯入fstream, 如以下敘述。 #include <fstream.h>

  13. ofstream • ofstream 是專門處理資料輸出的類別, 以下兩種方式皆可建立一個fout物件, 此物件可將資料輸出至C:\BCBbook\ch15\test1.txt 。 ofstream fout ("C:\\BCBbook\\ch15\\test1.txt"); • 或 ofstream fout; fout.open("C:\\BCBbook\\ch15\\test1.txt", ios::out); • 以下敘述皆可將"ABCDEF" 寫入指定的檔案。 fout.write("ABCDEF", 6); • 或 fout << "ABCDEF";

  14. ifstream • ifstream 是專門處理資料輸入的類別, 以下敘述可建立一個fin 物件, 並將C:\BCBbook\ch15\test1.txt 的內容指派由RichEdit 元件顯示。 ifstream fin; String ss=""; char ch; fin.open("c:\\BCBbook\\ch15\\test1.txt", ios::in); w h i l e ( f i n . g e t ( c h ) ) ss=ss+ch; f i n . c l o s e ( ) ; R i c h Ed i t 1 - >T e x t= s s ;

  15. 範例15-2a • 示範C++ 的檔案處理

More Related