首页
学习
活动
专区
工具
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_CURSEEK_END SEEK_SET   SEEK_SET: 文件开头   ...SEEK_CUR: 当前位置   SEEK_END: 文件结尾   其中SEEK_SET,SEEK_CURSEEK_END和依次为0,1和2.   ...如果没有打开文件,那么将会出现错误。 fseek函数也可以这样理解,相当于在文件当中定位。这样在读取规律性存储才文件时可以利用其OFFSET偏移量读取文件上任意内容。

99760
  • 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 从当前文件位置计算。

    37310

    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

    11.08-efi shell

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

    1.1K20

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

    上篇【C文件操作1】如何写入读取?fopen6种组合参数怎么用?介绍了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

    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

    【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.1K20

    要点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

    82720

    C语言文件操作

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

    2.7K20

    【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

    1.2K10

    Linux文件锁

    劝告锁: 劝告锁讲究是一种协同工作,内核仅负责对文件加锁以及检查文件是否已经上锁等操作,而不亲自去参与文件锁控制与协调,而这些都需要程序员首先要检查所要访问文件之前是否已经被其他进程加锁来实现并发控制...to interpret l_start: SEEK_SET, SEEK_CUR, SEEK_END */ off_t l_start; /* Starting offset..., l_start与l_len共同作用设置所加锁范围,其中l_whence设置锁参照起始点,SEEK_SET表示文件开头,SEEK_CUR表示文件当前位置(fseek可以移动文件指针位置),SEEK_END...= whence; /* SEEK_SET, SEEK_CUR, SEEK_END */ lock.l_len = len; /* #bytes (0 means to EOF)...= whence; /* SEEK_SET, SEEK_CUR, SEEK_END */ lock.l_len = len; /* #bytes (0 means to EOF) *

    2.3K40

    文件IO (二).结构体存取(2)

    编译执行过程中没有报错,从结果来看,f1、f2文件中内容变化也符合预期 ---- 小技巧 宏定义 在写代码过程偶尔会用到一些宏,这些宏多定义在头文件中,通过查看头文件,就可以获取相关信息 如我们想知道...、SEEK_CURSEEK_END 宏定义 emacs@ubuntu:~$ grep SEEK_SET /usr/include/* /usr/include/fcntl.h:# define...(if WHENCE is SEEK_CUR), emacs@ubuntu:~$ grep SEEK_END /usr/include/* /usr/include/fcntl.h:# define...,就可以进一步地缩小范围,有时一个函数头文件里并没有直接包含,可能是这个头文件所include文件中包含,多时可能达到4到5层 ---- 内存对齐 在定义有结构体代码中,要留意内存对齐问题 哪什么是内存对齐呢...对于32位机来说,4字节对齐能够使cpu访问速度提高,比如说一个long类型变量,如果跨越了4字节边界存储,那么cpu要读取两次,这样效率就低了。

    56730
    领券