1,概論
程式執行時,程式本身和資料一般都存放在記憶體中,程式執行結束後,存放在記憶體中的資料會被釋放,如果長期儲存程式執行所需的原始資料,或程式產生的結果資料,就必須以檔案的形式儲存到外部儲存介質上.
2,C語言檔案概述
1,檔案與檔名 檔案是指存放在外部儲存介質上的資料集合.為標識一個檔案,需要給每個檔案定一個檔名,檔名一般格式,主檔名.[副檔名] 2,檔案分類 可以從不同的角度對檔案進行分類, 根據檔案內容,可分為程式檔案與資料檔案, 程式檔案又可以分為原始檔,目標檔案,可執行檔案. 3,根據檔案的儲存形式:分為ascii和二進位制檔案. ascii碼檔案的每一個位元組儲存一個字元,便於對對字元進行處理,一般佔用儲存空間較多,而且需花費轉換時間[ascii與二進位制間互為轉換] 二進位制檔案,是把記憶體中的資料,原樣輸出到磁碟檔案中,可以節省磁碟儲存空間和ascii和二進位制間互為轉換時間.二進位制檔案中一個位元組並對應一個字元,不能直接輸出字元形式,不便於維護閱讀.
3,檔案讀寫,
讀檔案是指,將磁碟檔案中的資料傳送到記憶體的操作.
寫檔案是指,將計算機記憶體中的資料向磁碟檔案中傳.
構成檔案的基本單元與流式檔案
C語言將檔案看作是由一個個字元[ascii碼檔案],或位元組組成的,將這種檔案稱作流式檔案,
在高階語言中組成檔案的基本單位是記錄,對檔案操作的基本單位也是記錄.
4,檔案型別
每個被使用的檔案都在記憶體中開闢一個區 用來存放檔案的相關資訊,(檔名,狀態,位置),這些資訊儲存在一個結構體型別變數中,FILE,結構體型別由系統定義; typedef struct { int _fd; //檔案描述符 int _cleft; //緩衝區中剩下的字元 int _mode; //檔案操作 char *_nexttc; //下一個字元位置 char *_buff; //檔案緩衝區位置 } FILE;
5,檔案操作型別,結構體型別
定義FILE型別指標變數 FILE指標型別變數定義 FILE *指標變數名; eg:FILE *fp; fp是一個指向FILE結構體的指標變數; 可以使fp指向某個檔案的結構體變數,從而通過該結構體變數中的檔案資訊來訪問檔案.
6,檔案開啟函式
fopen(),呼叫方式 FILE *fp; fp=fopen(檔名,檔案使用方式); ^fp-->使用者自定義的檔案型別指標變數; 檔案的使用方式,具有特定含義的符合 fopen函式功能:以指定的方式開啟指定的檔案,若操作成功,則返回一個指向該檔案的指標,若開啟檔案時錯誤,返回NULL; 例如: FILE *fp; fp=fopen("/C/005/ruiy.dat","rw+");
7,檔案的使用方式;
檔案的操作模式基本字元[單獨使用是對文字檔案]; r -->僅為讀二開啟,(只讀檔案) w-->僅為寫開啟, (建立新檔案) a -->僅為新增而開啟, (寫舊檔案) 【注意】前面不是說了嗎:C把檔案看作是有一個ascii字元或一個二進位制字元組成的. 2,按二進位制格式讀寫檔案,字元方式+b; b輔助說明,按二進位制格式讀寫檔案. eg:fp=fopen("ruiy.dat","rb");
8,fclose
usage:int fclose(FILE *指標變數名);
功能:關閉檔案指標所指向的檔案,正常關閉了,函式返回值為0,失敗則為非0;
fclose(fp);//關閉檔案所指向的檔案;
9,檔案讀寫操作
單個字元操作讀寫函式,
fputc函式
一般呼叫形式:
fputc(字元常量或變數,檔案指標);
功能:把指定字元存入檔案指標所指向的檔案中;
如果輸出失敗,則返回一個EOF,(-1);
EOF是在stdio.h標頭檔案中的定義的符合常量,值為-1,
eg:fputc(ch,fp);
其中ch為字元變數,fp為檔案指標,
含義,將ch的值輸出到ftp所指向的檔案中
fgetc函式;
一般呼叫形式,字元變數=fgetc(檔案指標);
功能:從檔案指標所指檔案中讀取一個字元賦給指定的字元變數,當遇到一個檔案結束符,返回一個檔案結束符標誌
eg:ch=fgetc(fp);