之前經常遇到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

用fclose函數關閉資料檔案
fclose(fp);順序讀寫資料檔案
讀寫字元
讀寫字元串
用格式化的方式讀寫文本檔案
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為“檔案末尾位置”
“位移量”:指以“起始點”為基點,向前移動的位元組數(長整型)
例如:
用ftell函數測定檔案位置标記的目前位置
ftell函數的作用是得到流式檔案中檔案位置标記的目前位置,用相對于檔案開頭的位移量來表示。如果調用函數時出錯(如不存在fp指向的檔案),ftell函數傳回值為-1L。
例如: