精华内容
下载资源
问答
  • c语言fseek函数的总结
    千次阅读
    2017-08-21 17:33:34

    头文件:#include <stdio.h>

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

    参数:

        stream:指向打开的文件指针。

        offset:以基准点为起始点的偏移量。

        fromwhere:基准点。

    返回值:

        成功,返回0;失败返回-1。

    其中基准点包括这三个枚举:

        SEEK_SET:文件头。

        SEEK_CUR:当前位置。

        SEEK_END:文件件尾。

    作用:重定位流(数据流/文件)的内部位置指针。


    描述:函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere为基准,偏移offset个字节的位置。如果执行失败,则不改变stream指向的位置。

    程序实例:

    #include <stdio.h>
    long filesize(FILE*stream);
    int main(void)
    {
        FILE *stream;
        stream=fopen("MYFILE.TXT","w+");
        fprintf(stream,"Thisisatest");
        printf("FilesizeofMYFILE.TXTis%ldbytes\n",filesize(stream));
        fclose(stream);
        return 0;
    }
    
    long filesize(FILE*stream)
    {
        long curpos,length;
        curpos=ftell(stream);
        fseek(stream,0L,SEEK_END);
        length=ftell(stream);
        fseek(stream,curpos,SEEK_SET);
        return length;
    }


    其他用法:

    fseek(fp, 100L, 0);把stream指针移动到离文件开头100字节处;

    fseek(fp, 100L, 1);把stream指针移动到离文件当前位置字节处;

    fseek(fp, -100L, 2);把stream指针移动到离文件尾100字节处;

    上面函数的0, 1, 2分别为SEEK_SET,SEEK_CUR,SEEK_END。

    更多相关内容
  • C语言读写二进制文件的使用
  • C语言fseek函数

    2021-01-17 11:30:44
    C语言fseek函数教程在C 语言给我们提供了 fseekC语言fseek函数详解语法int fseek(FILE *fp, long offset, int origin);参数参数描述fp文件指针。offset偏移量,也就是要移动的字节数。offset 为正时,向后移动;...

    C语言fseek函数教程

    C 语言给我们提供了 fseek

    C语言fseek函数详解

    语法

    int fseek(FILE *fp, long offset, int origin);

    参数

    参数

    描述

    fp

    文件指针。

    offset

    偏移量,也就是要移动的字节数。offset 为正时,向后移动;offset 为负时,向前移动。

    origin

    origin 为起始位置,也就是从何处开始计算偏移量。

    origin参数

    起始点

    常量名

    常量值

    文件开头

    SEEK_SET

    0

    当前位置

    SEEK_CUR

    1

    文件末尾

    SEEK_END

    2

    头文件

    fseek 函数在 stdio.h 的头文件里面。

    案例

    使用fseek文件指针移动到开始

    使用 fseek 函数,实现将文件指针移动到文件的开始

    #include

    #include

    int main(){

    printf("嗨客网(www.haicoder.net)\n\n");

    FILE *fp = NULL;

    char str[100];

    if ( (fp = fopen("c:\\1.txt", "wt+")) == NULL )

    {

    puts("Open file failed\n");

    return;

    }

    fputs("Hello HaiCoder\n", fp);

    fputs("Hello C\n", fp);

    puts("Write file success\n");

    while (fgets(str, 100, fp) != NULL)

    {

    printf("Read line = %s", str);

    }

    fclose(fp);

    return 0;

    }

    程序运行后,控制台输出如下:

    62307fe28df3bd891d59004359e4663a.png

    我们首先,使用了

    此时,我们看到,我们并没有读取到任何文件内容,这是因为,我们写入文件内容之后,文件指针已经移动到了文件末尾,因此,无法正确读取文件内容,现在,我们修改程序如下:

    #include

    #include

    int main(){

    printf("嗨客网(www.haicoder.net)\n\n");

    FILE *fp = NULL;

    char str[100];

    if ( (fp = fopen("c:\\1.txt", "wt+")) == NULL )

    {

    puts("Open file failed\n");

    return;

    }

    fputs("Hello HaiCoder\n", fp);

    fputs("Hello C\n", fp);

    puts("Write file success\n");

    fseek(fp, 0, SEEK_SET);

    while (fgets(str, 100, fp) != NULL)

    {

    printf("Read line = %s", str);

    }

    fclose(fp);

    return 0;

    }

    程序运行后,控制台输出如下:

    4a4fbc3f9c130c8769df16d81c3044d8.png

    这次,我们在写入文件之后,使用了 fseek 函数,将文件指针再次移动到文件的开始,此时再次读取文件内容,我们发现,已经可以读取到文件内容了。

    我们再次,使用 feek 函数,实现将文件指针移动到文件的 10 个字节开始的位置,修改代码如下:

    #include

    #include

    int main()

    {

    printf("嗨客网(www.haicoder.net)\n\n");

    FILE *fp = NULL;

    char str[100];

    if ( (fp = fopen("c:\\1.txt", "wt+")) == NULL )

    {

    puts("Open file failed\n");

    return;

    }

    fputs("Hello HaiCoder\n", fp);

    fputs("Hello C\n", fp);

    puts("Write file success\n");

    fseek(fp, 10, SEEK_SET);

    while (fgets(str, 100, fp) != NULL)

    {

    printf("Read line = %s", str);

    }

    fclose(fp);

    return 0;

    }

    程序运行后,控制台输出如下:

    276966cceea6c853637606e1cb8bb0d9.png

    这次,我们在写入文件之后,使用了 fseek 函数,将文件指针移动到文件的开始 10 个字节的位置,此时再次读取文件内容,我们发现,读取的第一行文件的内容已经不全了。

    C语言fseek函数总结

    C 语言给我们提供了 fseek 函数,用来实现任意的移动文件指针,注意与 rewind 函数的区别,rewind 函数只能将文件指针移动到文件的开始。

    展开全文
  • 例如打开文件写入内容后,这时文件指针在末尾后一个字节,若需直接读出内容,可以选择关闭文件重新打开,这样文件指针重新指向文件首部,但这样来回打开关闭文件容易出错,可以使用fseek()函数对文件位置指针进行重...

    这三个函数的功能是对文件流的位置指针进行定位,方便文件的读写操作;例如打开文件写入内容后,这时文件指针在末尾后一个字节,若需直接读出内容,可以选择关闭文件重新打开,这样文件指针重新指向文件首部,但这样来回打开关闭文件容易出错,可以使用fseek()函数对文件位置指针进行重定位,重新将指针定位到文件首部。

    注意!!!
    这里所说的“指针”并不是文件流指针,而是文件内部的位置指针;随着对文件的读写操作,文件的位置指针向后移动(指向当前读写字节),文件关闭后指针自动指向文件首部。文件流指针指向整个文件,不重新赋值指向不会改变。

    fseek()函数

    函数原型

    #include <stdio.h>
    int fseek(FILE *stream, long offset, int whence);
    

    rewind()函数、fseek()函数以及ftell()函数都在标准IO库中,fseek()中stream表示文件流指针,whence表示想要定位的位置,offset表示偏移量,根据whence的位置需要移动的字节数,可正可负,正数表示正向偏移,负数表示反向偏移。fseek()可以设定访问文件的读写位置,可以以任意顺序访问文件的位置,从而实现文件的随机访问。

    whence的常量描述:

    常量数值描述
    SEEK_SET0文件首部
    SEEK_CUR1文件指针当前位置
    SEEK_END2文件尾部
    • SEEK_SET表示文件指针从文件首部偏移offset个字节(offset不能是负数),只能正向偏移
    • SEEK_CUR表示文件指针从当前位置偏移offset个字节
    • SEET_END表示文件指针从文件末尾偏移offset个字节(offset不能为正数),只能负向偏移
    fseek(fp,0L,SEEK_SET);	//定位到文件首部
    fseek(fp,100,SEEK_SET);	//定位到文件首部向后偏移100字节
    fseek(fp,-100,SEEK_CUR);	//定位到当前位置向前100字节
    fseek(fp,0L,SEEK_END);	//定位到文件尾部
    fseek(fp,-50,SEEK_END);	//定位到文件尾部向前50字节
    

    fseek 函数只返回执行的结果是否成功,成功返回0,失败返回-1,并不返回文件的读写位置。

    rewind()函数

    函数原型

    #include <stdio.h>
    void rewind(FILE *stream);
    

    rewind()函数中steam表示一个文件流指针,是将steam所指向文件的位置指针重新定位到文件首部,这个函数只能实现这一个功能;根据函数的原型,可以发现该函数的返回值为空,则无法判断其是否成功,也可以理解为该函数不会失败;因此在使用中最好使用fseek()函数进行替代。

    rewind(fp);		等价于	fseek(fp,0L,SEEK_SET);
    

    ftell()函数

    函数原型

    #include<stdio.h>
    long ftell(FILE *stream);
    

    ftell()函数的参数与rewind()函数相同,是一个文件流指针,ftell()函数获取当前位置指针所在的字节数,返回值是长整型。在实际读写文件中,文件位置将会频繁的随意移动,到最后不知道位置指针指向哪里,就可以利用ftell()函数得到当前位置指针的位置,下面写一段代码,利用fseek()和ftell()获取文件的大小。

    #include<stdio.h>
    #include<stdlib.h>
    
    int main()
    {
    	FILE *fp=NULL;
    
    	fp=fopen("文件位置及名称“,"r");	//以只读形式打开文件
    	if(fp==NULL)
    	{
    		perror("fopen()");
    		exit(1);
    	}
    	
    	fseek(fp,0L,SEEK_END);	//将文件位置指针指向文件末尾
    	printf("File size is %ld.\n",ftell(fp);		//长整型
    	exit(0);
    }
    
    展开全文
  • 关于C语言fseek函数的使用

    千次阅读 2021-02-07 11:19:35
    关于C语言

    关于C语言中fseek函数的使用

    fseek函数的基本使用

    fseek函数的头文件是stdio.h

    函数原型: fseek(FILE*, long, space)

    第一个参数一个文件指针,很显然是传递打开的文件的
    第二个参数是偏移量,是一个long型形参
    第三个参数是相对位置,有以下三种情况:
    1.SEEK_SET 文件开始处
    2.SEEK_CUR 当前位置
    3.SEEK_END 文件末尾
    这三个参数是宏定义,使用时直接填写就行

    接下来将用一个小例子来说明使用

    // 这是想要的函数
    FILE* fp;
    int test_data = 100;
    fp = fopen("test.bin", "r+"); // 打开文件
    if(fp == NULL)
    	exit(0);
    fseek(fp, 10, SEEK_SET); //将指针移到开始后的10字节位置
    fwrite(&test_data, sizeof(test_data), 1, fp);//写数据
    fclose(fp);
    

    fseek的注意事项

    接下来的这个

    // 这是想要的函数
    FILE* fp;
    int test_data = 100;
    fp = fopen("test.bin", "a+");
    if(fp == NULL)
    	exit(0);
    fseek(fp, 10, SEEK_SET); // 无效
    fwrite(&test_data, sizeof(test_data), 1, fp);
    fclose(fp);
    

    如果像上述这样以追加的格式打开文件,那么指针的移动是无效的,因为追加默认指向文件的末尾。
    如果想要修改文件,则需要用r+的格式打开。
    不能用w格式打开文件!因为那么做会清空文件的数据。

    展开全文
  • C 库函数 int fseek(FILE *stream, long int offset, int whence) 设置流 stream 的文件位置为给定的偏移 offset,参数 offset 意味着从给定的 whence(从何处; 从哪里; ) 位置查找的字节数。 声明 下面是 fseek() ...
  • c语言中,fseek(fp,sizeof(int)*3,0)是什么意思?int fseek(file*stream,long offset,int from where)函数设置文件指针流的位置。如果执行成功,流将指向基于fromwhere的偏移量(指针偏移量)字节位置,函数将返回...
  • fseek函数c语言 C中的fseek()函数 (fseek() function in C) Prototype: 原型: int feek(FILE *stream, long int offset, int origin); Parameters: 参数: FILE *stream, long int offset, int origin ...
  • 定义函数:int fseek(FILE * stream, long offset, int whence);   fseek()用来移动文件流的读写位置. 1、参数stream 为已打开的文件指针, 2、参数offset 为根据参数whence 来移动读写位置的位移数。 3、参数 ...
  • 一.fseek 函数简介 二.fseek 函数实战 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.fseek 函数简介 fseek 函数用来移动文件流的读写位置;就好比播放器,可以直接拖拽到...
  • C语言--fseek()

    2019-12-30 14:47:44
    int fseek(FILE *stream, long offset, int fromwhere);函数设置文件指针stream的位置。 如果执行成功,stream将指向以fromwhere为基准,偏移offset(指针偏移量)个字节的位置,函数返回0。如果执行失败(比如...
  • fseek()函数    fseek()函数简单的理解,功能就是用来设置打开文件中光标的位置。比如默认打开一个文件后,光标在文件的最开始位置,但是好多时候操作文件的时候,不一定都是从最开始位置操作的。有时候需要在文件...
  • 函数名: fseek头文件:函数原型: int fseek(FILE *stream, long offset, int fromwhere);功 能:重定位流上的文件指针 在流上重新定位文件结构的位置。fseek设置与流stream相联系的文件指针到新的位置,新位置与from...
  • 如果是你是32操作系统,c语言操作文件的大小是 2^31 ,2G如果是你是64操作系统,c语言操作文件的大小是.2^63 ,8589934592 G。你说的问题肯定,出在32位操作系统上。一是:操作系统能不能允许创建2G以上的文件了,...
  • 对于文件的定位,可以通过 rewind、fseek 与 ftell 函数来完成。 其中,rewind 函数用于将文件内部的位置指针重新指向一个流(数据流或者文件)的起始位置。这里需要注意的是,这里的“指针”表示的不是文件指针,...
  • #include <stdio.h> /* SEEK_SET 文件的开头 SEEK_CUR 文件指针的当前位置 SEEK_END 文件的末尾 ... fseek( fp, 7, SEEK_SET );//从开头位置向尾部跳过7个字节 fputs(" C Programming Langa.
  • 前面介绍的文件读写函数都是顺序读写,即读写文件只能从头开始,依次读写各个数据。但在实际开发中经常需要读写文件的中间部分...文件定位函数rewind和fseek移动文件内部位置指针的函数主要有两个,即 rewind() 和 f...
  • 1.fseek() 函数的声明。 int fseek(FILE *stream, long int offset, int whence) 2.描述 函数 int fseek(FILE *stream, long int offset, int whence) 设置流 stream 的文件位置为给定的偏移 offset,参数 offset ...
  • C语言fseek函数了解

    万次阅读 2012-12-13 15:29:47
    fseek()函数 重定位流(数据流/文件)上的文件内部位置指针 注意: 不是定位文件指针,文件指针指向文件/流,文件指针如果不重新赋值将不会改变指向别的文件。 位置指针指向文件内部的字节位置,随着文件的读取会...
  • 自用fseek()函数和ftell()函数
  • 优化代码时: 我将每次写入时,打开文件,写结束后,关闭文件 改为 沙盒启动时,打开文件,拿着句柄 每次检查句柄后,写入 沙盒退出时,关闭文件 调试 发现,沙盒不能正确恢复 检查 发现了一个新问题,调用fseek ...
  • c语言fseek(),fopen(),fwrite(),fread()函数,将txt文件中的后26位字母的小写改为大写。 #include <stdio.h> int main(void) { char buf[26]; FILE *fp = fopen("haha.txt","r+"); if(fp == NULL) { ...
  • } fseek(fp, 0, SEEK_END); //定位到文件尾,偏移量为0 len = ftell(fp); //返回当前定位的文件位置(也就是文件总长度) fclose(fp); printf("file.txt 的总大小 = %d 字节\n", len); return(0); } VS编译...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,817
精华内容 5,526
关键字:

c语言fseek