fseek()用法 设定文件的当前读写位置

转载 2018年04月17日 09:37:33

fseek函数是用来设定文件的当前读写位置。

1. 头文件:
stdio.h

2. 函数原型:
int fseek(FILE *stream, long offset, int fromwhere);

参数:

  • 第一个参数stream为文件指针
  • 第二个参数offset为偏移量,整数表示正向偏移,负数表示负向偏移
  • 第三个参数origin设定从文件的哪里开始偏移,可能取值为:SEEK_CUR、 SEEK_END 或 SEEK_SET
    • SEEK_SET: 文件开头
    • SEEK_CUR: 当前位置
    • SEEK_END: 文件结尾
    • SEEK_SET,SEEK_CUR和SEEK_END依次为:0,1和2.
  • 简言之:

    • fseek(fp,100L,0);把fp指针移动到离文件开头100字节处;
    • fseek(fp,100L,1);把fp指针移动到离文件当前位置100字节处;
    • fseek(fp,100L,2);把fp指针退回到离文件结尾100字节处。

3. 函数功能:
把stream的文件 读写位置指针 移到指定的位置。

4. 描 述:

  • 函数设置文件指针stream的位置。
  • 如果执行成功,stream将指向以fromwhere为基准,偏移offset个字节的位置。
    如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置。
  • 返回值: 成功,返回0,否则返回其他值。

5. 程序例:
例1:

#include <iostream>  
#include <ctype.h>
#include <cvInclude.h>


//修改waqExpoConfig.txt文件的曝光值
int writeExpo(int &expo, char *filename)
{
    //打开waqExpoConfig.txt文件
    FILE *fp;

    if ((fopen_s(&fp, filename, "rb+")) != 0)
    {
        printf("can not open the file\n");
        exit(0);//终止程序
    }

    //修改waqExpoConfig.txt文件内容(曝光值)
    //设定文件的当前读写位置:fp指向的位置是从文件开始后移0个字节
    fseek(fp, 0, SEEK_SET);
    //写文件:从fp指针指向的位置开始,写入:"ExpoVal : [%d]", expo
    fprintf_s(fp, "ExpoVal : [%d]", expo);

    //关闭waqExpoConfig.txt文件
    fclose(fp);
    //打印expo值
    printf("ExpoVal : [%d]\n", expo);

    return 0;
}

//通过键盘控制 曝光值的改变
int showImg(Mat &tempImg)
{
    char* window = "img";
    namedWindow(window, CV_WINDOW_AUTOSIZE);

    imshow(window, tempImg);//显示图像

    Mat saveImg = tempImg.clone();

    //设置waqExpoConfig.txt文件夹的位置和初始expo
    int expo = 10000;
    char filename[100] = "F:\\opencv 窗口显示图像,增加调光&保存按钮\\test2\\test2\\Config\\waqExpoConfig.txt";
    writeExpo(expo, filename);

    while (true)
    {
        char key = cvWaitKey(10);

        switch (key)
        {
        case 'u'://Up
            expo += 10000;
            writeExpo(expo, filename);
            break;

        case 'd'://Down
            expo -= 10000;
            writeExpo(expo, filename);
            break;
        };

        if (key == 27) //Escape
            break;
    }


    return 0;
}

int main(void)
{
    Mat tempImg = imread("F:/test_photo/3.bmp", 1);
    showImg(tempImg);
    system("pause");
    return 0;
}

如何使用文件的fseek函数对文件指针进行操作

C语言fseek()函数:移动文件的读写指针到指定的位置 下一节> 分享到:QQ空间新浪微博腾讯微博豆瓣人人网 C语言辅导班,帮助有志青年!全程一对一,永久学习,QQ在线...
  • qwezhaohaihong
  • qwezhaohaihong
  • 2016-11-27 14:07:15
  • 579

C语言fseek()函数:移动文件流的读写位置

头文件:#include 定义函数:int fseek(FILE * stream, long offset, int whence);   fseek()用来移动文件流的读写位置. 1、参...
  • Narutodp
  • Narutodp
  • 2016-09-08 14:33:11
  • 3982

通过文件指针来获取文件的大小(fseek与ftell函数 )

fseek函数是 用来设定文件的当前读写位置. 函数原型: int fseek(FILE *fp,long offset,int origin); 函数功能:把fp的文件读写位置指针移...
  • a6472953
  • a6472953
  • 2012-01-10 10:46:02
  • 19582

文件指针定位--fseek,ftell

#include using namespace std;void main() { FILE *fp=fopen("1.txt","a+"); cout
  • u012868357
  • u012868357
  • 2016-03-22 21:46:31
  • 917

fseek函数的用法(用于设定指针位置)

fseek函数用来设置文件指针stream的位置,原型为: int fseek(FILE *stream, long offset, int fromwhere);       下面先对fseek...
  • stpeace
  • stpeace
  • 2012-11-30 23:29:12
  • 6032

C++文件操作——fopen/fseek/ftell/fread/fwrite/fclose等函数用法

1. fopen  FILE * fopen(const char * path,const char * mode); 函数说明   参数path字符串包含欲打开的文件路径及文件名,参数mod...
  • wangkai_123456
  • wangkai_123456
  • 2015-12-23 16:45:30
  • 6817

使用fseek()函数从文件尾部前移并且写入数据

首先,打开文件
  • lichen18848950451
  • lichen18848950451
  • 2017-10-19 13:58:59
  • 272

【C语言】C语言返回文件大小的功能(fseek和ftell的使用)

需求:有时候读文件时,需要知道文件的字符总的个数,可能是为了提前定义缓冲区大小或者拷贝文件等等。也可以用于动态创建数组。 在进行这两个问题之前,先来了解一下两个函数,这两个函数配合就能够实现计算大小...
  • chenglibin1988
  • chenglibin1988
  • 2013-04-02 13:06:11
  • 10157

fseek文件偏移位置的返回值和指针位置关系 .

fseek文件偏移位置的返回值和指针位置关系 对应文件的指针偏移,在函数定义中并没有真正的说明清楚返回值,对于offset当为正数的时候是向文件尾偏移的,当为负数的时候是向文件头方向偏移的,这里主要...
  • a6472953
  • a6472953
  • 2012-01-10 10:39:09
  • 5861

C语言函数fread() , fwrite() ,fseek()用法分析

网上已经有不少关于c语言函数fread() 和fwrite() 用法分析的文章,在此将这两个函数的用法写下来,是为了巩固所学,加深印象,也为了日后方便查询复习比较,如果能帮助到某些朋友,则是意外的惊喜...
  • linpengbin
  • linpengbin
  • 2015-02-02 15:55:44
  • 4735
收藏助手
不良信息举报
您举报文章:fseek()用法 设定文件的当前读写位置
举报原因:
原因补充:

(最多只允许输入30个字)