Linux C语言常用库函数学习之——fseek()

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;
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值