首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

fseek(f,0,2);如果没有SEEK_CUR / SEEK_SET或SEEK_END,这是如何工作的?

fseek(f,0,2)是C语言中的文件操作函数,用于将文件指针移动到文件末尾。

在该函数中,f表示文件指针,0表示偏移量,2表示相对于文件末尾的位置。

如果没有定义SEEK_CUR / SEEK_SET或SEEK_END,fseek(f,0,2)的工作原理如下:

  1. 首先,获取文件的当前位置,可以通过ftell函数来实现。ftell函数返回文件指针相对于文件起始位置的偏移量。
  2. 然后,使用fseek函数将文件指针移动到文件末尾。由于没有定义SEEK_CUR / SEEK_SET或SEEK_END,偏移量为0表示相对于当前位置的偏移量。
  3. 最后,文件指针将移动到文件末尾,可以通过ftell函数再次获取文件指针的位置来验证。

fseek(f,0,2)的作用是定位文件指针到文件末尾,常用于文件读写操作中需要在文件末尾添加内容的场景。

腾讯云相关产品和产品介绍链接地址:

请注意,以上仅为示例产品,腾讯云还提供了更多与云计算相关的产品和服务。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

结构体存入文件并且取出

位置指针指向文件内部的字节位置,随着文件的读取会移动,文件指针如果不重新赋值将不会改变指向别的文件。...(stream, 0L, SEEK_END);   length = ftell(stream);   fseek(stream, curpos, SEEK_SET);   return length...正数表示正向偏移,负数表示负向偏移   第三个参数origin设定从文件的哪里开始偏移,可能取值为:SEEK_CUR、 SEEK_END 或 SEEK_SET   SEEK_SET: 文件开头   ...SEEK_CUR: 当前位置   SEEK_END: 文件结尾   其中SEEK_SET,SEEK_CUR和SEEK_END和依次为0,1和2.   ...如果没有打开的文件,那么将会出现错误。 fseek函数也可以这样理解,相当于在文件当中定位。这样在读取规律性存储才文件时可以利用其OFFSET偏移量读取文件上任意的内容。

1K60
  • Linux开发:lseek()函数和fseek()函数的使用详解

    whence:指定offset的起始位置,可以是以下三个值之一: SEEK_SET:文件的开头,offset从文件开头计算。 SEEK_CUR:当前位置,offset从当前文件位置计算。...SEEK_END:文件的末尾,offset从文件末尾计算。 当 whence 值为 SEEK_CUR 或 SEEK_END 时, 参数 offset 允许负值的出现....使用特例 lseek(int fd, 0, SEEK_SET) :读写位置移到文件开头 lseek(int fd, 0, SEEK_END) :读写位置移到文件尾 lseek(int fd, 0, SEEK_CUR...它与 lseek 不同,fseek 是针对流的,而 lseek 是针对文件描述符的。fseek 通常用于 FILE* 指针,这是 C 标准 I/O 库中使用的文件流类型。...whence:指定 offset 的起始位置,可以是以下三个宏之一: SEEK_SET:文件的开头,offset 从文件开头计算。 SEEK_CUR:当前位置,offset 从当前文件位置计算。

    1K10

    C语言基础系列: 预处理+文件操作

    起始点用0、1、2代替 0(SEEK_SET)代表文件开始位置 1(SEEK_CUR)代表当前位置 2(SEEK_END )代表文件末尾位置...//此处如果文件未创建或找不到文件名会在路径内自动创建 // 程序==>文件 // 参数: 文件,格式,obj fprintf(pfile, "%d,%f,%s", num0, f0, str0...五 指定位置读写 通过fseek(偏移函数)改变读写位置 关键词: fseek_偏移函数 用法: fseek(文件指针,偏移量(以字节为单位),初始位置) 初始位置预处理常量: SEEK_CUR 1 当前位置...它一般指定为下列常量之一: SEEK_SET 文件的开头 SEEK_CUR 文件指针的当前位置 SEEK_END 文件的末尾 #define SEEK_CUR 1 #define SEEK_END...它一般指定为下列常量之一: SEEK_SET 文件的开头 SEEK_CUR 文件指针的当前位置 SEEK_END 文件的末尾 #define SEEK_CUR 1 #define SEEK_END

    1.6K50

    【C文件操作2】如何随机的进行文件读取?

    上篇【C文件操作1】如何写入读取?fopen的6种组合参数怎么用?介绍了C语言文件操作的基本函数,fopen、fwrite、fread、fclose。这些只能从文件头读写或文件尾追加写入。...SEEK_SET 0 当前位置 SEEK_CUR 1 文件末尾 SEEK_END 2 例如: 将读写位置移动到文件开头 fseek(fp, 0L, SEEK_SET) 将读写位置移动到文件末尾 fseek...(fp,0L,SEEK_END); 将读写位置移动到离文件开头100字节处 fseek(fp,100L,SEEK_SET); 将读写位置移动到离文件当前位置100字节处 fseek(fp,100L,...SEEK_CUR); 将读写位置退回到离文件结尾100字节处(offset为负数表示向开头处移动) fseek(fp,-100L,SEEK_END); 注意: fseek 函数一般用于二进制文件,当然也可以用于文本文件...即随着对文件的读写,文件的位置指针(指向当前读写字节)向后移动。而文件指针指向整个文件,如果不重新赋值,文件指针不会发生改变。

    1.1K30

    11.08-efi shell

    若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留) wb 只写打开或新建一个二进制文件;只允许写数据。...上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库以二进制模式打开文件。如果不加b,表示默认加了t,即rt,wt,其中t表示以文本模式打开文件。...stream 输入流 返回值:实际读取的元素个数.如果返回值与count不相同,则可能文件结尾或发生错误.从ferror和feof获取错误信息或检测是否到达文件结尾....第二个参数offset为偏移量,整数表示正向偏移,负数表示负向偏移 第三个参数origin设定从文件的哪里开始偏移,可能取值为:SEEK_CUR、 SEEK_END 或 SEEK_SET SEEK_SET...: 文件开头 SEEK_CUR: 当前位置 SEEK_END: 文件结尾 其中SEEK_SET,SEEK_CUR和SEEK_END和依次为0,1和2.

    1.1K20

    PHP读取大文件【php】

    16M,这是通过 php.ini 里的 memory_limit = 16M 来进行设置,这个值如果设置-1,则内存使用量不受限制. ini_set('memory_limit','-1'); $file...该函数把文件指针从当前位置向前或向后移动到新的位置,新位置从文件头开始以字节数度量。 成功则返回 0;否则返回 -1。注意,移动到 EOF 之后的位置不会产生错误。..."; //读取文件的前10个字符之后,指针移动的位置在第10个字节处 -fseek($fp, 100,SEEK_CUR); //又将指针移动100个字节 第三个参数: //SEEK_SET...//SEEK_CUR - 设定位置为当前位置加上 offset。 //SEEK_END - 设定位置为文件末尾加上 offset (要移动到文件尾之前的位置,offset 必须是一个负值)。..."; //读取110到120字节数位置的字符串,读取后指针的位置为120 -fseek($fp,-10,SEEK_END); //又将指针移动到倒数10个字节位置处 -echo fread(

    5.9K30

    文件操作学不懂,小代老师带你深入理解文件操作(下卷)

    ⽂件的随机读写 6.1 fseek 根据⽂件指针的位置和偏移量来定位⽂件指针(⽂件内容的光标)。...(pf, 6, SEEK_SET); //fseek(pf, -1, SEEK_END); fseek(pf, 2, SEEK_CUR); ch = fgetc(pf); printf("%c"...(pf, 6, SEEK_SET);//输入文件指针相较于起始位置的偏移量 //fseek(pf, -1, SEEK_END);//输入文件指针相较于末尾位置的偏移量 fseek(pf, 2, SEEK_CUR...如果从磁盘向计算机读⼊数据,则从磁盘⽂件中读取数据输⼊到内存缓冲区(充满缓冲区),然后再从缓冲区逐个地将数据送到程序数据区(程序变量等)。缓冲区的⼤⼩根据C编译系统决定的。...这⾥可以得出⼀个结论: 因为有缓冲区的存在,C语⾔在操作⽂件的时候,需要做刷新缓冲区或者在⽂件操作结束的时候关闭⽂件。 如果不做,可能导致读写⽂件的问题。

    7110

    C语言详解(文件操作)1

    前言 我们写的程序的数据存储在电脑的内存中,如果没有文件,当程序退出的时候,内存会回收,那数据就丢失了,等再次运行程序是看不到上次程序的数据的,如果要将数据进行持久化的保存,我们就要使用文件。...,它能拥有下列值之一:SEEK_SET(文件起始位置)、SEEK_CUR(文件指针当前位置)、SEEK_END(文件末尾) 运行下面的代码: #include int main()...(pf, 4, SEEK_SET); //fseek(pf, -3, SEEK_END); fseek(pf, 2, SEEK_CUR); ch = fgetc(pf); printf("%c\...(pf, 4, SEEK_SET); //fseek(pf, -3, SEEK_END); fseek(pf, 2, SEEK_CUR); ch = fgetc(pf); printf("%c\...(pf, 4, SEEK_SET); //fseek(pf, -3, SEEK_END); fseek(pf, 2, SEEK_CUR); ch = fgetc(pf); printf("%c\

    5710

    要点4:C的文件操作

    若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留) wb 只写打开或新建一个二进制文件;只允许写数据。...fseek的三个参数, 第一个是文件句柄,第三个参数是基准位置,第二个是相对于基准位置的偏移处,基准位置有三个: 名称 代表位置 值形式 SEEK_SET 文件首部 0 SEEK_CUR 当前位置 1...(fp, -2, SEEK_END); fputc('b', fp); // 将指针转到开头改a fseek(fp, 0, SEEK_SET); fputc('a', fp); // 将指针转到第三个字符改...c fseek(fp, 1, SEEK_CUR); fputc('c', fp); // 关闭文件 fclose(fp); return EXIT_SUCCESS; } 需要注意的是,SEEK_END...fseek只有在下面两种情况下才能保证当文件以文档模式打开时能正确使用fseek函数: 与起始位置相对偏移为0的重置,即没有改动指针位置 origin设置为SEEK_SET,offset为调用ftell

    83720

    【C 语言】文件操作 ( fseek 使用注意事项 | fseek 函数返回值分析 )

    文章目录 一、fseek 函数返回值分析 二、fseek 函数返回值分析代码示例 一、fseek 函数返回值分析 ---- fseek 函数原型如下 : 重新设置文件内部指针的位置 ; #include...参数就是 起始位置 , 有以下三种选择 : 文件头 SEEK_SET 0 当前位置 SEEK_CUR 1 文件尾 SEEK_END 2 long offset 偏移量参数 , 可以为正数 , 也可以为负数...; 如果执行成功 , 则返回 0 , 失败返回非 0 , 并设置 error 错误代码 ; fseek() 函数的返回值 , 如果正向偏移位置超出文件末尾 , 其返回值仍返回 0 , 反向偏移位置如果超过文件开始位置..., 仍然返回 0 ; fseek() 函数的返回值 , 如果返回 0 , 要确认是否超过了文件的首尾范围 , 如果没有超过则指针偏移成功 , 如果超过了文件范围 , 则没有任何意义 ; fseek 函数返回值为...(p2, 400, SEEK_SET); // 打印 fseek 返回结果 printf("fseek res = %d\n", res); return 0; } 执行结果

    1.4K20

    C语言文件操作

    a:以附加的方式打开只写文件。若文件不存在,则会创建该文件:如果文件存在,则写入的数据会被加到文件尾后,即文件原先的内容会被保留(EOF 符保留)。 a+:以附加方式打开可读写的文件。...若文件不存在,则会创建该文件,如果文件存在,则写入的数据会被加到文件尾后,即文件原先的内容会被保留(EOF符不保留)。 wb:以只写方式打开或新建一一个二进制文件,只允许写数据。...fprintf和fscanf进行搭配时,如果不想以空格或换行为分割点,例如采用:,为分隔符,那么可以采用%[^,],的形式来读取。...; 第一个参数stream为文件指针 第二个参数offset为偏移量,正数表示正向偏移,负数表示负向偏移 第三个参数origin设定从文件的哪里开始偏移,可能取值为:SEEK_CUR、 SEEK_END...或 SEEK_SET SEEK_SET: 文件开头 SEEK_CUR: 当前位置 SEEK_END: 文件结尾 其中SEEK_SET,SEEK_CUR和SEEK_END依次为0,1和2.

    2.7K20

    【Linux】文件操作函数 (详解)

    : * SEEK_SET: 从文件头部开始偏移 offset 个字节 * SEEK_CUR: 从当前文件指针的位置向后偏移 offset 个字节 * SEEK_END: 从文件尾部向后偏移...,则将该文件的偏移量设置为其当前值加 offset,offset可为正或负 若whence是 SEEK_END,则将该文件的偏移量设置为文件长度加 offset,offset可为正或负 1.6 综合样例...当一个进程正常终止时(直接调用exit函数,或从main函数返回), 则所有带未写缓冲数据的标准IO流都被冲洗,所有打开的标准IO流都被关闭 2.5 fseek 函数 - 定位流 int fseek...whence: 定义文件中哪里开始偏移,取值可为:SEEK_CUR(当前位置)、 SEEK_END (文件结尾)或 SEEK_SET(文件开头)。...其中SEEK_SET,SEEK_CUR和SEEK_END依次为0,1和2。 返回值: 如果执行成功,函数返回0。如果执行失败,函数返回一个非0值。

    15710

    【C 语言】文件操作 ( fseek 函数 )

    文章目录 一、fseek 函数 二、fseek 函数代码示例 一、fseek 函数 ---- FILE 文件结构中 , 存在一个指针 , 每次调用文件的读写函数 , 该指针就会移动 ; 如 fgets...fseek 函数进行改变 ; fseek 函数原型如下 : 重新设置文件内部指针的位置 ; #include int fseek(FILE *stream, long offset..., int fromwhere); 设置的指针的位置是 起始位置 + 偏移量 ; 其中的 int fromwhere 参数就是 起始位置 , 有以下三种选择 : 文件头 SEEK_SET 0 当前位置...SEEK_CUR 1 文件尾 SEEK_END 2 long offset 偏移量参数 , 可以为正数 , 也可以为负数 ; 如果执行成功 , 则返回 0 , 失败返回非 0 , 并设置 error 错误代码...(p2, 4, SEEK_CUR); // 读取 2 字节 fread(array2, 1, sizeof(array2), p2); // 打印前 2 字节数据 printf

    2K10
    领券