fseek函數
-
頭文件:
stdio.h
-
函數原型:
int fseek(FILE *stream, long offset, int fromwhere)
函數功能:將指向文件的指針從fromwhere
處(可以是頭、尾、也可以是當前位置)移動offset
個字節位置,簡單點來說就是讓指向文件的指針從文件頭部或者文件尾部或者當前位置移動一定的字節,移動的字節數也稱偏移量用offset
表示,當offset
大於0時表示指針向右移動;當offset
小於0時,指針向左移動。 -
參數說明
參數名 | 參數說明 |
---|---|
FILE *stream |
文件指針 |
long offset |
偏移量:當該值大於0時表示向右偏移,小於0時表示向左偏移 |
int fromwhere |
從何處開始偏移:該參數只有三個選項,不可隨意填寫。其中SEEK_SET表示文件開頭;SEEK_CUR表示當前位置;SEEK_END表示文件末尾; |
- 應用舉例:
/*================================================================
* Copyright (C) 2019 Sangfor Ltd. All rights reserved.
*
* 文件名稱:fseek_test.c
* 創 建 者:zt
* 創建日期:2019年08月24日
* 描 述:
*
================================================================*/
#include <stdio.h>
#include <string.h>
#define FILE_PATH "./fseek_test.txt"
#define FILE_CONTENT "0123456789abc"
#define FILE_IS_NOT_EXIST NULL
#define SUCCESS 0
#define FAIL -1
#define BUFF_SIZE 1024
int main(int argc, char* argv[]){
//定義函數返回值接收變量
int ret = 0;
//初始化數據緩衝區
char buff[BUFF_SIZE] = {'\0'};
//初始化文件指針爲NULL,爲了方便後面判斷文件是否成功打開
FILE *filep = NULL;
//以只讀方式打開文件
filep = fopen(FILE_PATH, "r");
//若文件不存在
if(filep == FILE_IS_NOT_EXIST) {
//已只寫方式打開文件,若文件不存在則創建
filep = fopen(FILE_PATH, "w");
//向文件中寫入內容
ret = fwrite(FILE_CONTENT, sizeof(FILE_CONTENT), 1, filep);
//若寫文件失敗
if(ret < 0) {
printf("write content to file fail!\n");
return FAIL;
}//endif
}//endif
fread(buff, 32, 1, filep);
printf("origion file content is [%s]\n", buff);
//清空緩存
memset(buff, '\0', BUFF_SIZE);
//將指向新創建文件的指針從文件開頭向右側移動5個字節位置
fseek(filep, 9L, SEEK_SET);
//只讀一個字節數據
#if 0
fread(buff, 1, 1, filep);
printf("[%s]\n", buff);
//讀取指針後所有字節數據
#else
fread(buff, 32, 1, filep);
printf("[%s]\n", buff);
#endif
fclose(filep);
return 0;
}