C語言檔案定位函式rewind和fseek

2021-10-05 08:21:54 字數 1444 閱讀 4172

移動檔案內部位置指標的函式主要有兩個,即 rewind() 和 fseek()。

rewind() 用來將位置指標移動到檔案開頭,前面已經多次使用過,它的原型為:

void rewind ( file *fp );
fseek() 用來將位置指標移動到任意位置,它的原型為:

int fseek ( file *fp, long offset, int origin );
引數說明:

1) fp 為檔案指標,也就是被移動的檔案。

2) offset 為偏移量,也就是要移動的位元組數。之所以為 long 型別,是希望移動的範圍更大,能處理的檔案更大。offset 為正時,向後移動;offset 為負時,向前移動。

3) origin 為起始位置,也就是從何處開始計算偏移量。c語言規定的起始位置有三種,分別為檔案開頭、當前位置和檔案末尾,每個位置都用對應的常量來表示:

起始點常量名

常量值檔案開頭

seek_set

0當前位置

seek_cur

1檔案末尾

seek_end2

例如,把位置指標移動到離檔案開頭100個位元組處:

fseek(fp, 100, 0);
值得說明的是,fseek() 一般用於二進位制檔案,在文字檔案中由於要進行轉換,計算的位置有時會出錯。

在移動位置指標之後,就可以用前面介紹的任何一種讀寫函式進行讀寫了。由於是二進位制檔案,因此常用 fread() 和 fwrite() 讀寫。

【示例】從鍵盤輸入三組學生資訊,儲存到檔案中,然後讀取第二個學生的資訊。

#include

#define n 3

struct stuboys[n], boy, *pboys;

int main()

printf("input data:\n");

for(i=0; i

scanf("%s %d %d %f", pboys->name, &pboys->num, &pboys->age, &pboys->score);

}fwrite(boys, sizeof(struct stu), n, fp); //寫入三條學生資訊

fseek(fp, sizeof(struct stu), seek_set); //移動位置指標

fread(&boy, sizeof(struct stu), 1, fp); //讀取一條學生資訊

printf("%s %d %d %f\n", boy.name, boy.num, boy.age, boy.score);

fclose(fp);

return 0;

}執行結果:

input data:

tom 2 15 90.5↙

hua 1 14 99↙

zhao 10 16 95.5↙

hua  1  14 99.000000

檔案定位函式

void rewind file stream rewind 用來將位置指標移動到檔案開頭 int fseek file stream long offset int whence offset 為偏移量,也就是要移動的位元組數。之所以為 long 型別,是希望移動的範圍更大,能處理的檔案更大。of...

檔案的定位(函式

rewind函式 將位置指標重新置位到檔案首部 rewind 檔案指標 返回為void型別,不需賦返回值於變數 fseek函式 定位位置指標 fseek 檔案指標,位移量,起始點 原型 intfseek file stream,long offset,int fromwhere 檔案定位位置 起始點...

C語言檔案操作函式

1.fopen 開啟檔案 相關函式 open,fclose 表頭檔案 include 定義函式 file fopen const char path,const char mode 函式說明 引數path字串包含欲開啟的檔案路徑及檔名,引數mode字串則代表著流形態。mode有下列幾種形態字串 r ...