C檔案與檔案的操作

Azad221103發表於2018-08-18

C檔案

檔案:儲存在外部介質上資料的集合。
在程式設計中,檔案主要分為程式檔案與資料檔案。

程式檔案:源程式檔案(字尾為.c)、目標檔案(字尾為.obj)、可執行檔案(字尾為.exe)(此檔案內容為程式程式碼);
資料檔案:程式執行中輸出到磁碟(或其他外部裝置)的資料、在程式執行過程中供讀入的資料(此檔案內容為供程式執行時讀寫的資料)。

檔案標識分為三部分:檔案路徑、檔名主幹、檔案字尾

檔案字尾 含義
doc Word生成的檔案
txt 文字檔案
dat 資料檔案
c c語言源程式檔案
cpp c++源程式檔案
for FORTRAN源程式檔案
pas Pascal源程式檔案
ppt 電子幻燈檔案
bmp 圖形檔案

資料檔案可再分為ASCLL檔案(文字檔案)和二進位制檔案(映像檔案)

typedef struct
{ short level;            //快取區“滿”或“空”的程度
  unsigned flags;         //檔案狀態標誌
  char fd;                //檔案標誌符
  unsigned  char hold;    //如快取區無內容則不讀取字元
  short bsize;            //快取區的大小
  unsigned char*buffer;   //資料快取區的位置
  unsigned char*curp;     //指標當前的指向
  unsigned   istemp;      //臨時檔案指示器
  short token;            //用於有效性檢查
 }FILE;

注:宣告FILE結構體型別的資訊需包含在標頭檔案“stdio.h”中。

在編寫程式中,開啟或關閉檔案在一般情況下,都是在對指標進行相關的操作。在開啟檔案的過程中建立指標與檔案之間的聯絡,指定一個指標變數指向該檔案,並通過此指標變數對檔案進行讀寫。

開啟檔案:為檔案建立相應的資訊區(用來存放有關檔案的資訊)和檔案緩衝區(用來暫時存放輸入輸出的資料);
關閉檔案:撤銷檔案資訊區和檔案緩衝區,使檔案指標變數不再指向該檔案,繼而使得讀寫檔案失敗。

用fopen開啟檔案
fopen的呼叫方式為:
fopen(檔名,使用檔案方式);

eg:
  fopen("al","r");    // 使用讀入(“r”表示讀入)的方式開啟名稱為“al”的檔案,fopen函式的返回值是指向“al”檔案的指標(即al檔案資訊區的起始地址)。
   FLFE*fp;           //定義一個指向檔案的指標變數fp
   fp=fopen("al","r");//將fopen函式的返回值賦給指標變數fp
檔案使用方式 含義 若指定檔案不存在
“r”(只讀) 為輸入資料開啟一個已存在的文字檔案 出錯
“w”(只寫) 為輸出資料開啟一個文字檔案 建立新檔案
“a”(追加) 向文字檔案尾新增資料 出錯
“rb”(只讀) 為輸入資料開啟一個二進位制檔案 出錯
“wb”(只寫) 為輸出資料開啟一個二進位制檔案 建立新檔案
“ab”(追加) 向二進位制檔案尾新增資料 出錯

這裡寫圖片描述
前面講了開啟檔案需呼叫fopen函式,有開啟就會有關閉,關閉檔案則需要呼叫fclose函式,其呼叫形式為:
fclose(檔案指標);
eg:
fclose(fp)

關閉檔案操作成功返回值為0,否則返回EOF(-1)。
若未關閉檔案,則會導致資料丟失。

在向檔案輸入資料時,資料先輸入到緩衝區,待緩衝區滿後才會輸出到檔案。
若緩衝區未滿而程式結束,有可能引起緩衝區內資料丟失。
而呼叫fclose函式關閉檔案時,先會把緩衝區資料輸入到磁碟檔案中再撤銷檔案資訊區,如此便可保證資料不再丟失。

詳細知識點可參考《C程式設計》—–譚浩強 著

在重新回顧學生學籍管理系統的程式時
遇到了某些語句卻不甚明白其用法
便想著要重溫這些知識點

一是提醒自己及時回顧相應知識點
二是希望可以幫助到同樣對此知識點抱有疑惑的網友們

若有錯誤,還望各位大佬們指正,在下不勝感激並會及時修改。
嗯 江湖再見啦~