fseek()使用详解
在阅读代码时,遇到了很早之前用过的FSEEK(),很久没有用了,有点陌生,写出来以便下次查阅。
函数功能是把文件指针指向文件的开头,需要包含头文件stdio.h中
FSEEK
函数名:FSEEK
功能:重定位流上的文件指针
用行业释义法律:INT FSEEK(FILE *流,长偏移,INT fromwhere);
描述:函数设置文件指针流的位置如果执行成功,流将指向以fromwhere为基准,偏移抵消个字节的位置如果执行失败(比如偏移量超过文件自身大小),则不改变流指向的位置。
返回值:成功,返回0,否则返回其他值
FSEEK位置文件位置指针,指向由流引用的文件到由offset计算的字节位置。
程序例:
- #include <stdio.h>
- 长 文件大小(文件 *流);
- int main(void )
- {
- 文件 *流;
- stream = fopen("MYFILE.TXT", "w+");
- fprintf(stream, "This is a test");
- printf("Filesize of MYFILE.TXT is %ld bytes\n", filesize(stream));
- fclose(stream);
- return 0;
- }
- long filesize(FILE *stream)
- {
- long curpos, length;
- curpos = ftell(stream);
- fseek(stream, 0L, SEEK_END);
- length = ftell(stream);
- fseek(stream, curpos, SEEK_SET);
- return length;
- }
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字节处。
使用实例:
- #include <stdio.h>
- #define N 5
- typedef struct student {
- long sno;
- char name[10];
- float score[3];
- } STU;
- void fun(char *filename, STU n)
- {
- FILE *fp;
- fp = fopen(filename, "rb+");
- fseek(fp, -1L*sizeof(STU),SEEK_END);
- fwrite(&n, sizeof(STU), 1, fp);
- fclose(fp);
- }
- void main()
- {
- STU t[N]={ {10001,"MaChao", 91, 92, 77}, {10002,"CaoKai", 75, 60, 88},
- {10003,"LiSi", 85, 70, 78}, {10004,"FangFang", 90, 82, 87},
- {10005,"ZhangSan", 95, 80, 88}};
- STU n={10006,"ZhaoSi", 55, 70, 68}, ss[N];
- int i,j; FILE *fp;
- fp = fopen("student.dat", "wb");
- fwrite(t, sizeof(STU), N, fp);
- fclose(fp);
- fp = fopen("student.dat", "rb");
- fread(ss, sizeof(STU), N, fp);
- fclose(fp);
- printf("\nThe original data :\n\n");
- for (j=0; j<N; j++)
- {
- printf("\nNo: %ld Name: %-8s Scores: ",ss[j].sno, ss[j].name);
- for (i=0; i<3; i++)
- printf("%6.2f ", ss[j].score[i]);
- printf("\n");
- }
- fun(“student.dat” ,n);
- printf(“\ n修改后的数据:\ n \ n” );
- fp = fopen(“student.dat” , “rb” );
- fread(ss, sizeof (STU),N,fp);
- FCLOSE(FP);
- for (j = 0; j <N; j ++)
- {
- printf(“\ nNo:%ld Name:%-8s Scores:” ,ss [j] .sno,ss [j] .name);
- for (i = 0; i <3; i ++)
- printf(“%6.2f” ,ss [j] .score [i]);
- printf(“\ n” );
- }
fseek()使用详解相关推荐
- fseek 函数 详解
转自:http://hi.baidu.com/shanghaocool/blog/item/22124b11683c360f5baf5351.html 1.函数功能 用来读写一个数据块. 2.一般调用 ...
- php中读取大文件实现方法详解
php中读取大文件实现方法详解 来源: 时间:2013-09-05 19:27:01 阅读数:6186 分享到:0 [导读] 本文章来给各位同学介绍php中读取大文件实现方法详解吧,有需要了解 ...
- ARM 之十 ARMCC(Keil) map 文件(映射文件)详解
在看这篇文章之前 需要对 ARM ELF 文件有一定的了解.了解什么是域(Region).节(Section,也称为节区).段(Segment).镜像(Image).镜像文件(Image File)等 ...
- fsetpos() fgetpos()详解
fsetpos()详解 函数原型:int fsetpos(FILE *fp, const fpos_t *pos); 头文件:#include<stdio.h> 是否是标准函数:是 函数功 ...
- 三维重建:PNG格式详解-与LibPNG使用
PNG图像包含了骨骼信息,左边的图像比右边的大几十K,包含了骨骼信息: PNG格式详解:https://blog.mythsman.com/post/5d2d62b4a2005d7404 ...
- mkv210_image.c文件详解
以下内容源于朱有鹏<物联网大讲堂>课程的学习,如有侵权,请告知删除. 1.mkv210_image.c的使用演示 裸机程序中的Makefile(实际上真正的项目的Makefile都是这样的 ...
- C 和 C++ 文件操作详解
来源:http://www.cnblogs.com/likebeta/archive/2012/06/16/2551662.html 来源:http://www.cnblogs.com/likebet ...
- php 断点续传 暂停,PHP 断点续传实例详解
在做一个案例,要给客户端做断点续传的服务, 断点续传主要是HTTP协议中的Content-Range报头.其理解如下: Content-Range:响应资源的范围.可以在多次请求中标记请求的资源范围, ...
- mkv210_image.c详解
1.背景知识回顾 s5pv210启动后先执行内部iROM中的BL0,BL0执行完后会根据OMpin的配置选择一个外部设备来启动(有很多,我们实际使用的有2个:usb启动和SD卡启动). 在usb启动 ...
- php读取大文件详解【OK】
在php中,对于文件的读取时,最快捷的方式莫过于使用一些诸如file.file_get_contents之类的函数,简简单单的几行代码就能很漂亮 的完成我们所需要的功能.但当所操作的文件是一个比较大的 ...
最新文章
- easyexcel怎么设置表头宽度_easyexcel 自动设置列宽
- 你还在用GDB调试程序吗?
- Java 20年:JVM虚拟化技术的发展
- 学习,是前进的必由之路
- 【教程】怎么同时同时ping1000个IP地址?
- 【LCT】遥远的国度(P3979)
- 集团bim对集团项目服务器,BIM再添一员,五洋建设集团BIM项目组举行成立仪式
- 【Pytorch神经网络理论篇】 35 GaitSet模型:步态识别思路+水平金字塔池化+三元损失
- 小米3Android密码怎么解吗,小米路由器3管理密码忘记了怎么办?
- Java基础:如何改变字符串内字符的大小写
- Dubbo入门----搭建一个最简单的Demo框架
- meta分析的基本步骤是什么-附实例讲解,meta分析七步快速见刊策略
- php实现图片加密,PHP实现支持加盐的图片加密解密.pdf
- python import失败_解决python有时候import不了当前的包问题
- 锐捷服务器虚拟化技术_打造数字新基建 | 锐捷5G云小站助力行业数字化转型
- 论“黄海和渤海开凿人工运河的分析”(最新)
- 对话哈佛大学教授Lukin:量子计算将在我们有生之年普及! | AI英雄
- 多领域常见的一种NB-IoT温湿度传感器
- 团队管理11--管理规划四要素及四步走
- 全网最详细的接口测试实战案例【全文57000字】
热门文章
- BonBon - 使用 CSS3 制作甜美的糖果按钮
- 在vue中使用antV-G2展示柱状图
- Elasticsearch 8.0报错:received plaintext http traffic on an https channel, closing connection
- 基于MFC实现分栏Splitter
- jS代码写在html什么位置,3种JavaScript代码书写位置和注意事项
- 语音识别原理与应用 第三章 语音特征提取
- 怎么样构建一个简单的网页
- 前端三件套简介(HTML\CSS\JS)
- WCDMA网信道解释
- 页面手写签名插件 jSignature.min.js 使用实例