实现随机读写的关键是要按要求移动位置指针,这称为文件的定位。

文件定位

移动文件内部位置指针的函数主要有两个,即rewind()和fseek()。rewind函数前面已多次使用过,其调用形式为:    rewind(文件指针);它的功能是把文件内部的位置指针移到文件首。下面主要介绍fseek函数。fseek函数用来移动文件内部位置指针,其调用形式为:    fseek(文件指针,位移量,起始点);其中:

“文件指针”指向被移动的文件。

“位移量”表示移动的字节数,要求位移量是long型数据,以便在文件长度大于64KB 时不会出错。当用常量表示位移量时,要求加后缀“L”。

“起始点”表示从何处开始计算位移量,规定的起始点有三种:文件首,当前位置和文件尾。

其表示方法如下表:

起始点

表示符号

例如:    fseek(fp,100L,0);其意义是把位置指针移到离文件首100个字节处。还要说明的是fseek函数一般用于二进制文件。在文本文件中由于要进行转换,故往往计算的位置会出现错误。

文件的随机读写

在移动位置指针之后,即可用前面介绍的任一种读写函数进行读写。由于一般是读写一个数据据块,因此常用fread和fwrite函数。下面用例题来说明文件的随机读写。【例13-8】在学生文件stu_list中读出第二个学生的数据。#include

struct stu{

char name[10];

int num;

int age;

char addr[15];

}boy,*qq;

main(){

FILE *fp;

char ch;

int i=1;

qq=&boy;

if((fp=fopen("stu_list","rb"))==NULL){

printf("Cannot open file strike any key exit!");

getch();

exit(1);

}

rewind(fp);

fseek(fp,i*sizeof(struct stu),0);

fread(qq,sizeof(struct stu),1,fp);

printf("\n\nname\tnumber age addr\n");

printf("%s\t%5d %7d %s\n",qq->name,qq->num,qq->age,qq->addr);

}文件stu_list已由【例13-6】的程序建立,本程序用随机读出的方法读出第二个学生的数据。程序中定义boy为stu类型变量,qq为指向boy的指针。以读二进制文件方式打开文件,程序第19行移动文件位置指针。其中的i值为1,表示从文件头开始,移动一个stu类型的长度,然后再读出的数据即为第二个学生的数据。

c语言二fseek从文件头移动_编程C语言文件的随机读写相关推荐

  1. wav文件头修复_标记管理音频文件工具:Yate for Mac

    Yate for Mac是一款Mac平台的音乐标签及管理工具,能够帮助我们轻松编辑音乐文件的元标签数据,支持MP3, M4A, MP4,AIFF, FLAC, WAV以及 DSF格式的音频文件,我们可 ...

  2. 分享:bbed修改数据文件头推进scn与其他数据文件相同

    2019独角兽企业重金招聘Python工程师标准>>> 场景简介: 物理copy表空间数据文件,数据库发生完全检查点,删除该表空间下的数据文件,使该表空间数据文件头的scn与其他数据 ...

  3. 修改oracle的表空间文件scn,分享:bbed修改数据文件头推进scn与其他数据文件相同...

    场景简介: 物理copy表空间数据文件,数据库发生完全检查点,删除该表空间下的数据文件,使该表空间数据文件头的scn与其他数据文件不一致. 场景构造: 1.创建测试表空间 SYS@orser> ...

  4. C语言文件操作(三) —— 文件的随机读写(fseek / lseek)

            目录 1.什么是文件的随机读写 2.认识文件随机读写函数 (1) fseek 函数 -- 移动文件指针的位置 (2) ftell 函数 -- 告知当前文件指针相对于起始位置的偏移量 ( ...

  5. c语言生成随机坐标,C语言 文件的随机读写详解及示例代码

    前面介绍的文件读写函数都是顺序读写,即读写文件只能从头开始,依次读写各个数据.但在实际开发中经常需要读写文件的中间部分,要解决这个问题,就得先移动文件内部的位置指针,再进行读写.这种读写方式称为随机读 ...

  6. c语言生成随机的坐标,C语言文件的随机读写

    前面介绍的文件读写函数都是顺序读写,即读写文件只能从头开始,依次读写各个数据.但在实际开发中经常需要读写文件的中间部分,要解决这个问题,就得先移动文件内部的位置指针,再进行读写.这种读写方式称为随机读 ...

  7. C语言文件的随机读写

    C语言文件的随机读写 文件顺序读写,即读写文件只能从头开始,依次读写各个数据.但在实际开发中经常需要读写文件的中间部分,要解决这个问题,就得先移动文件内部的位置指针,再进行读写.这种读写方式称为随机读 ...

  8. mysql文件头标记_通过文件头准确识别PHP上传的文件类型 ( 一 )

    /** * 通过文件名,获得文件类型* * @version 0.1 * $filename="d:/1.png";echo cFileTypeCheck::getFileType ...

  9. java校验文件头格式_转自:java 文件格式二进制头文件校验

    转自:https://blog.csdn.net/useprogram/article/details/90637401 public class FileTypeUtil { private fin ...

最新文章

  1. COCO2017数据集api说明
  2. pythonimportre_Python Re注意问题(持续更新)
  3. 阿里技术:万级规模K8s如何管理?
  4. How to bind multiple properties with formatter on one control
  5. What happened when we perform Maven Update Project in Eclipse
  6. php接收vue请求数据axios,详解vue axios用post提交的数据格式
  7. Linux 关于Transparent Hugepages的介绍
  8. linux下高可用性群集和负载均衡群集的实现
  9. Linux中如何让进程在后台运行
  10. 互联网大厂的“中台战略”到底是什么?
  11. 介绍一下xgb_珍藏版 | 20道XGBoost面试题,你会几个?(上篇)
  12. sklearn.neighbors.KNeighborsClassifier()函数解析(最清晰的解释)
  13. python京东抢购软件_福利来了,python 京东抢购茅台脚本(亲测可用)
  14. 我对于外包开发的看法
  15. 计算机科学家事迹,【CCF会员故事】计算机软件科学家谢涛:星辰大海,求思进取...
  16. 海量GIS文章,软件教程,GIs编程奉送!!(转)
  17. 求职面试:怎样克服面试紧张
  18. 2020华为春招--N阶方阵旋转(python)
  19. 33.0 haproxy
  20. 综述:微生物群落的生物技术潜力及应用

热门文章

  1. java动态代理上是否能再进行一层代理
  2. 本人常用的基础 linux命令
  3. 半径对氢原子基态能级的影响H
  4. 腾讯云linux服务器怎么使用图形化界面_自己搭建一个自动签到和远程下载的服务器...
  5. 在c语言中 十六进制转十进制,C语言中十六进制转十进制两种实现方法
  6. 1.12 梯度的数值逼近-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
  7. 3.6 激活函数-深度学习-Stanford吴恩达教授
  8. 【树莓派】可能是最简单粗暴的树莓派搭建个人网站教程
  9. 【STBC】Alamouti,STBC误码率仿真
  10. dotConnect for Oracle入门指南(八):通过OracleCommand类使用存储过