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;
}