天天看點

(C語言)檔案操作

之前經常遇到C語言中檔案的操作,經常因奇奇怪怪的函數而感到一頭霧水,終于今晚有幸上了下程式設計基礎課,對檔案的操作有了一次系統性學習的體驗,下面就稍作記錄,以便查閱

檔案類型指針

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 *fp;//定義一個指向FILE類型資料的指針變量

用fopen函數打開資料檔案

FILE*fp;

//定義一個指向檔案的指針變量fp

fp=fopen(″a1″,″r″);

//将fopen函數的傳回值賦給指針變量fp

(C語言)檔案操作

用fclose函數關閉資料檔案

fclose(fp);順序讀寫資料檔案

讀寫字元

(C語言)檔案操作

讀寫字元串

(C語言)檔案操作

用格式化的方式讀寫文本檔案

fprintf(檔案指針, 格式字元串, 輸出表列);

fscanf(檔案指針, 格式字元串, 輸出表列);

例如:

fprintf (fp,″%d,%6.2f″,i,f); //将int型變量i和float型變量f的值按%d和%6.2f的格式輸出到fp指向的檔案中

fscanf (fp,″%d,%f″,&i,&f);

//磁盤檔案上如果有字元“3,4.5”,則從中讀取整數3送給整型變量i,讀取實數4.5送給float型變量f

用二進制方式向檔案讀寫一組資料

fread(buffer, size, count, fp);

fwrite(buffer, size, count, fp);

buffer: 是一個位址。對fread,它是用來存放從檔案讀入的資料的存儲區的位址。對fwrite,是要把此位址開始的存儲區中的資料向檔案輸出(以上指的是起始位址)。

size: 要讀寫的位元組數。

count: 要讀寫多少個資料項(每個資料項長度為size)。

fp: FILE類型指針。

例如:

float f[10];

fread(f,4,10,fp); //從fp所指向的檔案讀入10個4個位元組的資料,存儲到數組f中

随機讀寫資料檔案

rewind(檔案指針);

使檔案位置标記指向檔案開頭,無傳回值

fseek(檔案類型指針, 位移量, 起始點);

用fseek函數改變檔案位置标記

“起始點”:用0,1或2代替,0代表“檔案開始位置”,1為“目前位置”,2為“檔案末尾位置”

“位移量”:指以“起始點”為基點,向前移動的位元組數(長整型)

例如:

(C語言)檔案操作

用ftell函數測定檔案位置标記的目前位置

ftell函數的作用是得到流式檔案中檔案位置标記的目前位置,用相對于檔案開頭的位移量來表示。如果調用函數時出錯(如不存在fp指向的檔案),ftell函數傳回值為-1L。

例如:

(C語言)檔案操作

繼續閱讀