转自:http://hi.baidu.com/wengjiang000/item/867ead5da7d95c10abf6d736

通常文件打开后,读写位置按先后顺序.但有时你想变动读写位置,例如重新从某处起,再读一次.

int fseek(FILE *stream, long offset, int fromwhere);fseek 用于二进制方式打开的文件,移动文件读写指针位置.

fseek(in,-1L,1);   -- 文件流in, 零点为当前指针位置,SEEK_CUR 就是 1,  -1L -- 文件指针回退1个字节int fseek( FILE *stream, long offset, int origin );

第一个参数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字节处。

rewind

功 能: 将文件指针重新指向一个流的开头 用 法: int rewind(FILE *stream);

函数原型: long ftell(FILE *fp)

函数功能:得到流式文件的当前读写位置,其返回值是当前读写位置偏离文件头部的字节数.

fread

功 能: 从一个流中读数据

函数原型: size_tfread(void*buffer,size_tsize,size_tcount,FILE*stream);

参 数:

1.用于接收数据的地址(指针)(buffer)

2.单个元素的大小(size) :单位是字节而不是位,例如读取一个整型数就是2个字节

3.元素个数(count)

4.提供数据的文件指针(stream)

返回值:成功读取的元素个数 程序例  #include

int main(void)

{

FILE *stream;

char msg[] = "this is a test";

char buf[20];

if ((stream = fopen("DUMMY.FIL", "w+"))

== NULL)

{

fprintf(stderr,

"Cannot open output file.\n");

return 1;

}

/* write some data to the file */

fwrite(msg, strlen(msg)+1, 1, stream);

/* seek to the beginning of the file */

fseek(stream, 0, SEEK_SET);

/* read the data and display it */

fread(buf, strlen(msg)+1, 1,stream);

printf("%s\n", buf);

fclose(stream);

return 0;

}

c语言指针移动函数,fseek c语言指针移动函数相关推荐

  1. C语言fseek、ftell和rewind函数详解

    对于文件的读写方式,C 语言不仅支持简单地顺序读写方式,还支持随机读写(即只要求读写文件中某一指定的部分).对顺序读写方式来说,随机读写方式需要将文件内部的位置指针移动到需要读写的位置再进行读写,这通 ...

  2. C语言——文件操作函数 fseek、ftell、rewind详解

    前言 前面,我讲了讲文件操作的第二步:文件的读写操作,里面详细的介绍了各类读写函数的用法,有兴趣的小伙伴可以去看看: C语言--文件操作(2)文件的读写操作_ 接下来,我再来讲一讲关于标题中这三个函数 ...

  3. C语言学习笔记--预编译/宏定义/数组/参数传递/函数指针

    目录 预编译 值传递.指针传递.引用传递 数组 typedef 函数指针 预编译 预编译又叫预处理.预编译不是编译,而是编译前的处理.这个操作是在正式编译之前由系统自动完成的.#define 和 #i ...

  4. 【C 语言】一级指针 易犯错误 模型 ( 判定指针合法性 | 数组越界 | 不断修改指针变量值 | 函数中将栈内存数组返回 | 函数间接赋值形参操作 | 指针取值与自增操作 )

    文章目录 一.判定指针合法性 二.数组越界 三.不断修改指针变量值 四.函数中将栈内存数组返回 五.函数间接赋值形参操作 六.指针取值与自增操作 一.判定指针合法性 判定指针合法性时 , 必须进行如下 ...

  5. 【C 语言】字符串模型 ( 字符串翻转模型 | 抽象成业务函数 | 形参返回值 | 函数返回值 | 函数形参处理 | 形参指针判空 )

    文章目录 一.字符串翻转模型 业务函数 二.完整代码示例 一.字符串翻转模型 业务函数 将上一篇博客 [C 语言]字符串模型 ( 字符串翻转模型 ) 的代码 , 主要业务逻辑 , 抽象成函数 ; 字符 ...

  6. 【C 语言】指针 与 数组 ( 指针 | 数组 | 指针运算 | 数组访问方式 | 字符串 | 指针数组 | 数组指针 | 多维数组 | 多维指针 | 数组参数 | 函数指针 | 复杂指针解读)

    相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...

  7. C语言什么时候必须用到二级指针?(需要调用函数为一维空指针确定值的情况下,需要传入二维指针,也就是那个一维指针的指针)

    结论:需要调用函数为一维空指针确定值的情况下,需要传入二维指针,也就是那个一维指针的指针 例子:为空指针p开辟内存空间 1.不用二级指针(无法实现) #include <stdio.h> ...

  8. C语言程序设计 | 指针(二):常量指针和指针常量、数组参数和指针参数、函数指针数组

    指针的进阶(二)目录: 常量指针和指针常量 数组参数和指针参数 函数指针数组 常量指针和指针常量 在我们日常中,经常会用到一个关键字const const是一个C语言(ANSI C)的关键字,具有着举 ...

  9. 【C语言进阶深度学习记录】三十二 函数指针与使用函数指针实现回调函数

    回调函数是非常重要的概念 文章目录 1 函数的类型 2 函数指针 2.1 函数指针的使用 2.2 使用函数指针实现回调函数 3 总结 1 函数的类型 跟以前学数组的时候是一样的,C语言中的数组是有自己 ...

最新文章

  1. java线程的优先级是数字越大优先级越高_《深入理解Java虚拟机》5分钟速成:12章(Java内存模型与线程)...
  2. pg-xl 基于 pgxc_ctl 安装与使用
  3. 剑指offer(Java实现) 从上往下打印二叉树
  4. 鼠标事件onmouuse大全
  5. 四大对象是什么时候创建的?
  6. 无理由退房退机票,做携程超级会员就是这么任性
  7. php xml 实例教程,php解析xml方法实例详解,解析xml实例详解_PHP教程
  8. 在SpringBoot中优雅的实现定时任务
  9. Linux运维问题解决(4)——linux LVM技术 逻辑卷增加 扩容 缩小 删除等操作
  10. 【金融】【python】处理表格(*.xlsx)形式的期货数据
  11. 485不用双绞线可以吗_刘兴亮丨有了北斗,中国可以不用GPS吗
  12. 事务背书 ACID, CAP, BASE
  13. java集合与数组的区别
  14. image.getSubimage(x, y, width, height)函数解析
  15. 网站优化的关键词选择的重要性
  16. MATLAB火灾自动报警与消防控制系统
  17. android edittext 字母数字键盘,android EditText默认数字键盘,能输入字母,数字和中文...
  18. 2018安徽省考c语言笔试答案,2018年安徽公务员考试行测真题解读
  19. 【XR】AR开发技术栈概述
  20. MySQL主从- slave跳过错误

热门文章

  1. 银联押宝二维码支付 背后还有一片纷争江湖
  2. aka鉴权 ims_IMS鉴权过程中各参数的用途
  3. java开发网易电话面试 一面总结
  4. 钉钉网页版怎样适用于企业的个性化发展
  5. 小程序添加关注公众号代码功能
  6. 现在的AI专业(如机器学习)已经沦为调包专业了吗?
  7. android应用双开
  8. 关于微软surface pro的介绍
  9. 实时系统与非实时系统的区别
  10. Google pixel Android 8.0 模拟器