1、功 能

重定位流( 数据流/文件)上的 文件内部位置 指针

注意:不是 定位文件指针,文件指针指向文件/流。位置 指针指向文件内部的字节位置,随着文件的读取会移动, 文件指针如果不重新赋值将不会改变指向别的文件。

2、用 法

int fseek(FILE *stream, long offset, int fromwhere);

3、描 述

函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere(偏移起始位置: 文件头0(SEEK_SET),当前位置1(SEEK_CUR),文件尾2(SEEK_END))为基准,偏移offset( 指针 偏移量)个字节的位置。如果执行失败( 比如offset超过文件自身大小),则不改变stream指向的位置。

fseek 函数和lseek函数类似,但lseek返回的是一个off_t数值,而fseek返回的是一个整型。

4、返回值

成功,返回0,失败返回-1,并设置errno的值,可以用perror()函数输出错误。

代码示例1:

#include <stdio.h>
#include <stdlib.h>int main(void)
{char wr_buf[] = "Linux应用编程,开心快乐每一天!"; char second[] = "I LOVE LINUX!";  FILE *fp = NULL;if (NULL == (fp = fopen("test_file.txt", "w+"))){perror("fopen error");exit(-1);}printf("文件打开成功!\n");if (sizeof(wr_buf) >fwrite(wr_buf, 1, sizeof(wr_buf), fp)){printf("fwrite error\n");fclose(fp);exit(-1);}printf("数据写入成功!\n");/*    if (0 > fseek(fp, 0, SEEK_SET)){perror("fseek error");fclose(fp);exit(-1);} */ fwrite(second, 1, sizeof(second), fp);  exit(0);
}

运行结果:首先通过fopen函数打开文件,再通过fwrite函数向fp文件中写入"Linux应用编程,开心快乐每一天!";最后通过fwrite函数向fp文件中写入"I LOVE LINUX!"

代码示例2:

#include <stdio.h>
#include <stdlib.h>int main(void)
{char wr_buf[] = "Linux应用编程,开心快乐每一天!";char second[] = "I LOVE LINUX!";FILE *fp = NULL;if (NULL == (fp = fopen("test_file.txt", "w+"))){perror("fopen error");exit(-1);}printf("文件打开成功!\n");if (sizeof(wr_buf) >fwrite(wr_buf, 1, sizeof(wr_buf), fp)){printf("fwrite error\n");fclose(fp);exit(-1);}printf("数据写入成功!\n");if (0 > fseek(fp, 0, SEEK_SET)){perror("fseek error");fclose(fp);exit(-1);}fwrite(second, 1, sizeof(second), fp);   exit(0);
}

运行结果:首先通过fopen函数打开文件,再通过fwrite函数向fp文件中写入"Linux应用编程,开心快乐每一天!";通过fseek(fp, 0, SEEK_SET)函数将文件指针转移到文件起始位置,通过fwrite函数向fp文件中写入"I LOVE LINUX!",这个字符串将覆盖"Linux应用编程,开心快乐每一天!"

linux fseek函数用法详解相关推荐

  1. linux signal用法,Linux 信号 signal 用法详解及注意事项

    Linux 信号 signal 用法详解及注意事项 1) SIGHUP 本信号在用户终端连接 (正常或非正常) 结束时发出, 通常是在终端的控 制进程结束时, 通知同一 session 内的各个作业, ...

  2. linux fork 用法,Linux系统调用fork()用法详解

    linux 系统调用fork()的用法详解 Linux系统调用fork()用法详解 1. 先看下面代码: #include #include //pid_t类型定义 #include //函数fork ...

  3. ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多)

    ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多) https://blog.csdn.net/qq_25221835/article/details/82762416 post ...

  4. C++中substr()函数用法详解

    C++中substr()函数用法详解 原型: string substr (size_t pos = 0, size_t len = npos) const; 返回一个新构造的string对象,其值初 ...

  5. LayoutInflater的inflate函数用法详解

    LayoutInflater的inflate函数用法详解 LayoutInflater作用是将layout的xml布局文件实例化为View类对象. 获取LayoutInflater的方法有如下三种: ...

  6. c++ memset 语言_C++中memset函数用法详解

    本文实例讲述了C++中memset函数用法.分享给大家供大家参考,具体如下: 功 能: 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值,块的大小由第三个参数指定,这个函数通常 ...

  7. mysql: union / union all / 自定义函数用法详解

    mysql: union / union all http://www.cnblogs.com/wangyayun/p/6133540.html mysql:自定义函数用法详解 http://www. ...

  8. python中mat函数_Python中flatten( )函数及函数用法详解

    flatten()函数用法 flatten是numpy.ndarray.flatten的一个函数,即返回一个一维数组. flatten只能适用于numpy对象,即array或者mat,普通的list列 ...

  9. ROW_NUMBER() OVER()函数用法详解

    今天同事问了一个关于插入表的问题,对象:被插入表sys_equi_disorg   A  , 查询表sys_equi_dict   B 因为A表的ID不是自增的,并且不能更改表结构,主键默认值还是0, ...

最新文章

  1. 超酷图片压缩工具,就是不支持批量
  2. 7216:Minecraft
  3. unknown builtin op: aten::Tensor
  4. 深度学习为什么要resize_为什么要学习演讲与口才
  5. [更正]谈获取当前系统类型(SP OR PPC)
  6. python语言的主要网站是_python语言主要是做什么的
  7. 【CV秋季划】人脸编辑之统一属性编辑方法视频更新
  8. 【python】sqlite使用
  9. java程序员遇到的问题_JAVA程序员最常遇见的10个异常
  10. Java接口修饰符详解
  11. (30)Gulp 文件操作
  12. [转贴] 从零开始学C++之异常(二):程序错误、异常(语法、抛出、捕获、传播)、栈展开...
  13. c语言删除元素1116,C语言网蓝桥杯1116 IP判断
  14. 【滤波器】基于matlab GUI高通+低通+带通+带阻FIR滤波器设计【含Matlab源码 092期】
  15. 同城门户同城分类信息网站源码+小程序端+49款插件
  16. 好的大创计算机类课题,大学大创课题有哪些
  17. 淘宝网上一买卖精彩对话
  18. soul源码阅读(七)Spring Cloud应用示例运行续2
  19. android 打开摄像头
  20. 庐陵乡土“订婚”文化简记

热门文章

  1. 中国各地强化H7N9禽流感疫情防控工作
  2. ChatGPT+打印机自动写作业?都是科技与狠活
  3. 组合数学-Chapter VIII: 生成函数
  4. 提取bilibili网页视频目录,网页提取标签、属性,list到写入文本
  5. 旋流除砂器的安装使用有哪些问题
  6. 高数下|级数1|手写笔记
  7. 【阿里云挂载/阿里云盘/本地挂载网络盘/WebDAV/win软件/界面】
  8. 十三、MyBatis的缓存
  9. MATLAB比较字符串
  10. 看生产排单软件在冶金项目的应用