在阅读代码时,遇到了很早之前用过的FSEEK(),很久没有用了,有点陌生,写出来以便下次查阅。

函数功能是把文件指针指向文件的开头,需要包含头文件stdio.h中

FSEEK
  函数名:FSEEK
  功能:重定位流上的文件指针
  用行业释义法律:INT FSEEK(FILE *流,长偏移,INT fromwhere);
  描述:函数设置文件指针流的位置如果执行成功,流将指向以fromwhere为基准,偏移抵消个字节的位置如果执行失败(比如偏移量超过文件自身大小),则不改变流指向的位置。
  返回值:成功,返回0,否则返回其他值
  FSEEK位置文件位置指针,指向由流引用的文件到由offset计算的字节位置。
   程序例:

[cpp]   查看纯 文本  
  1. #include <stdio.h>
  2. 长 文件大小(文件 *流);
  3. int  main(void )
  4. {
  5. 文件 *流;
  6. stream = fopen("MYFILE.TXT", "w+");
  7. fprintf(stream, "This is a test");
  8. printf("Filesize of MYFILE.TXT is %ld bytes\n", filesize(stream));
  9. fclose(stream);
  10. return 0;
  11. }
  12. long filesize(FILE *stream)
  13. {
  14. long curpos, length;
  15. curpos = ftell(stream);
  16. fseek(stream, 0L, SEEK_END);
  17. length = ftell(stream);
  18. fseek(stream, curpos, SEEK_SET);
  19. return length;
  20. }

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字节处。
  使用实例:

[cpp]  view plain  copy
  1. #include <stdio.h>
  2. #define N 5
  3. typedef struct student {
  4. long sno;
  5. char name[10];
  6. float score[3];
  7. } STU;
  8. void fun(char *filename, STU n)
  9. {
  10. FILE *fp;
  11. fp = fopen(filename, "rb+");
  12. fseek(fp, -1L*sizeof(STU),SEEK_END);
  13. fwrite(&n, sizeof(STU), 1, fp);
  14. fclose(fp);
  15. }
  16. void main()
  17. {
  18. STU t[N]={ {10001,"MaChao", 91, 92, 77}, {10002,"CaoKai", 75, 60, 88},
  19. {10003,"LiSi", 85, 70, 78}, {10004,"FangFang", 90, 82, 87},
  20. {10005,"ZhangSan", 95, 80, 88}};
  21. STU n={10006,"ZhaoSi", 55, 70, 68}, ss[N];
  22. int i,j; FILE *fp;
  23. fp = fopen("student.dat", "wb");
  24. fwrite(t, sizeof(STU), N, fp);
  25. fclose(fp);
  26. fp = fopen("student.dat", "rb");
  27. fread(ss, sizeof(STU), N, fp);
  28. fclose(fp);
  29. printf("\nThe original data :\n\n");
  30. for (j=0; j<N; j++)
  31. {
  32. printf("\nNo: %ld Name: %-8s Scores: ",ss[j].sno, ss[j].name);
  33. for (i=0; i<3; i++)
[cpp]  view plain  copy
  1. printf("%6.2f ", ss[j].score[i]);
  2. printf("\n");
  3. }
  4. fun(“student.dat” ,n);
  5. printf(“\ n修改后的数据:\ n \ n” );
  6. fp = fopen(“student.dat” ,  “rb” );
  7. fread(ss,  sizeof (STU),N,fp);
  8. FCLOSE(FP);
  9. for  (j = 0; j <N; j ++)
  10. {
  11. printf(“\ nNo:%ld Name:%-8s Scores:” ,ss [j] .sno,ss [j] .name);
  12. for  (i = 0; i <3; i ++)
[cpp]   查看纯 文本  
  1. printf(“%6.2f” ,ss [j] .score [i]);
  2. printf(“\ n” );
  3. }

fseek()使用详解相关推荐

  1. fseek 函数 详解

    转自:http://hi.baidu.com/shanghaocool/blog/item/22124b11683c360f5baf5351.html 1.函数功能 用来读写一个数据块. 2.一般调用 ...

  2. php中读取大文件实现方法详解

    php中读取大文件实现方法详解 来源:   时间:2013-09-05 19:27:01   阅读数:6186 分享到:0 [导读] 本文章来给各位同学介绍php中读取大文件实现方法详解吧,有需要了解 ...

  3. ARM 之十 ARMCC(Keil) map 文件(映射文件)详解

    在看这篇文章之前 需要对 ARM ELF 文件有一定的了解.了解什么是域(Region).节(Section,也称为节区).段(Segment).镜像(Image).镜像文件(Image File)等 ...

  4. fsetpos() fgetpos()详解

    fsetpos()详解 函数原型:int fsetpos(FILE *fp, const fpos_t *pos); 头文件:#include<stdio.h> 是否是标准函数:是 函数功 ...

  5. 三维重建:PNG格式详解-与LibPNG使用

    PNG图像包含了骨骼信息,左边的图像比右边的大几十K,包含了骨骼信息:        PNG格式详解:https://blog.mythsman.com/post/5d2d62b4a2005d7404 ...

  6. mkv210_image.c文件详解

    以下内容源于朱有鹏<物联网大讲堂>课程的学习,如有侵权,请告知删除. 1.mkv210_image.c的使用演示 裸机程序中的Makefile(实际上真正的项目的Makefile都是这样的 ...

  7. C 和 C++ 文件操作详解

    来源:http://www.cnblogs.com/likebeta/archive/2012/06/16/2551662.html 来源:http://www.cnblogs.com/likebet ...

  8. php 断点续传 暂停,PHP 断点续传实例详解

    在做一个案例,要给客户端做断点续传的服务, 断点续传主要是HTTP协议中的Content-Range报头.其理解如下: Content-Range:响应资源的范围.可以在多次请求中标记请求的资源范围, ...

  9. mkv210_image.c详解

    1.背景知识回顾 s5pv210启动后先执行内部iROM中的BL0,BL0执行完后会根据OMpin的配置选择一个外部设备来启动(有很多,我们实际使用的有2个:usb启动和SD卡启动).  在usb启动 ...

  10. php读取大文件详解【OK】

    在php中,对于文件的读取时,最快捷的方式莫过于使用一些诸如file.file_get_contents之类的函数,简简单单的几行代码就能很漂亮 的完成我们所需要的功能.但当所操作的文件是一个比较大的 ...

最新文章

  1. easyexcel怎么设置表头宽度_easyexcel 自动设置列宽
  2. 你还在用GDB调试程序吗?
  3. Java 20年:JVM虚拟化技术的发展
  4. 学习,是前进的必由之路
  5. 【教程】怎么同时同时ping1000个IP地址?
  6. 【LCT】遥远的国度(P3979)
  7. 集团bim对集团项目服务器,BIM再添一员,五洋建设集团BIM项目组举行成立仪式
  8. 【Pytorch神经网络理论篇】 35 GaitSet模型:步态识别思路+水平金字塔池化+三元损失
  9. 小米3Android密码怎么解吗,小米路由器3管理密码忘记了怎么办?
  10. Java基础:如何改变字符串内字符的大小写
  11. Dubbo入门----搭建一个最简单的Demo框架
  12. meta分析的基本步骤是什么-附实例讲解,meta分析七步快速见刊策略
  13. php实现图片加密,PHP实现支持加盐的图片加密解密.pdf
  14. python import失败_解决python有时候import不了当前的包问题
  15. 锐捷服务器虚拟化技术_打造数字新基建 | 锐捷5G云小站助力行业数字化转型
  16. 论“黄海和渤海开凿人工运河的分析”(最新)
  17. 对话哈佛大学教授Lukin:量子计算将在我们有生之年普及! | AI英雄
  18. 多领域常见的一种NB-IoT温湿度传感器
  19. 团队管理11--管理规划四要素及四步走
  20. 全网最详细的接口测试实战案例【全文57000字】

热门文章

  1. BonBon - 使用 CSS3 制作甜美的糖果按钮
  2. 在vue中使用antV-G2展示柱状图
  3. Elasticsearch 8.0报错:received plaintext http traffic on an https channel, closing connection
  4. 基于MFC实现分栏Splitter
  5. jS代码写在html什么位置,3种JavaScript代码书写位置和注意事项
  6. 语音识别原理与应用 第三章 语音特征提取
  7. 怎么样构建一个简单的网页
  8. 前端三件套简介(HTML\CSS\JS)
  9. WCDMA网信道解释
  10. 页面手写签名插件 jSignature.min.js 使用实例