C語言檔案操作解析
在檔案作業中除了開啟作業以及讀取與寫入操作,還有幾種較常見的操作。下面介紹一下這些操作中所涉及的函數。
一.移動位置指標的函數
rewind函數與fseek函數,這兩個函數的原型是:
void rewind(FILE *fp); ,long int offset,int origin); 將位置指標移到距離origin的offset位元組數的位置
其中對於fseek函數中的參數,origin為起始點,offset為距離origin的偏移位元組數
origin的值有三個:SEEK_SET(0 )—>檔案首,SEEK_CUR(1)—>目前位置,SEEK_END(2)—>檔案尾。
注意:1)若文件是以追加方式打開,則當進行寫入操作時,這兩個函數是不起作用的,無論將位置指針移動哪個位置,始終將添加的數據追加到文件末尾。
二.其他常用函數
1.ftell函數
long int ftell(FILE *fp);
計算目前位置指標距檔案首的位元組數,若出錯,則傳回-1L。
利用ftell函數可以計算出檔案的大小。
2.feof函數
int feof(FILE *fp);
偵測目前位置指標是否到達檔案結尾,若到達檔案結尾,則傳回非零值,否則回傳0。
3.ferror函數
int ferror(FILE *fp);
檢測文件操作過程中是否出錯,若出錯,則回傳一個非零值,否則回傳0
4.remove函數
const char *filename);刪除文件,若刪除成功,則回傳0,否則傳回非零值5.rename函數int rename(const char *oldname,const char *newname);將文件重新命名,重新命名成功則回傳0,否則傳回非零值。 6.freopen函數FILE* freopen(const char *filename,const char *mode,FILE *stream);實作重定向輸入輸出。此函數在測試資料時用得比較多。 7.fclose函數int fclose(FILE *stream);關閉一個流,若成功,則回傳0,否則返回-1.注意每次對文件操作完之後需關閉流,否則可能會造成資料遺失。 測試程式:#include<stdio.h> #include<stdlib.h> int main(void) { freopen("input.txt","r",stdin); freopen("output.txt","w+",stdout); int i; int a[10]; for(i=0;i<10;i++) { scanf("%d",&a[i]); } for(i=0;i<10;i++) { printf("%d\n",a[i]); } return 0; }