fseek() 函数用法

屎大颗666 2018-05-17 12:22:24

63258

收藏 65分类专栏: 【Software】C Language转载请注明出处:https://blog.csdn.net/wl_soft50/article/details/7787521每天进步一点点-->函数fseek() 用法在阅读代码时,遇到了很早之前用过的fseek(),很久没有用了,有点陌生,写出来以便下次查阅。函数功能是把文件指针指向文件的开头,需要包含头文件stdio.hfseek函数名: fseek功 能: 重定位流上的文件指针用 法: int fseek(FILE *stream, long offset, int fromwhere);描 述: 函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere为基准,偏移offset个字     节的位置。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置。返回值: 成功,返回0,否则返回其他值。fseek position the file position pointer for the file referenced by stream to the byte location calculated by offset.程序例:[cpp]#include <stdio.h>long filesize(FILE *stream);int main(void){FILE *stream;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_SETSEEK_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字节处。(根据评论来看,应该是 fseek(fp,-100L,2) )使用实例:[cpp]#include <stdio.h>#define N 5typedef 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++)[cpp]printf("%6.2f ", ss[j].score[i]);printf("\n");}fun("student.dat", n);printf("\nThe data after modifing :\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++)[cpp]printf("%6.2f ", ss[j].score[i]);printf("\n");}

(0)

相关推荐

  • C语言中文件随机读写是怎么一回事?

    原创黑马程序员教程2021-02-25 11:48:59 文件操作是编程必不可少的技能,普通文件的读写大家都会,就不展开说了,今天小编带大家学习一下文件随机读写. 文件随机读写就是不按常规读写文件,想 ...

  • C语言fgetc和fputc函数用法详解(以字符形式读写文件)

    文章来源:http://c.biancheng.net/view/2068.html 在C语言中,读写文件比较灵活,既可以每次读写一个字符,也可以读写一个字符串,甚至是任意字节的数据(数据块).本节介 ...

  • Vlookup函数用法:核对两个文档表格数据

    两个文档数据顺序不同,表格数量庞大的情况下,如何快速核对数据呢?你还在用肉眼一个个查看吗?教你简单又不会出错的方法,使用vlookup函数核对表格数据. 1.待核对表格数据 这两个表格是待核对的,一个 ...

  • VLOOKUP函数用法大全

    小伙伴们好啊,今天和大家来说说VLOOKUP的那些事儿,深入了解一下VLOOKUP函数的各种用法,看看这位大众情人还藏着多少不为人知的秘密. 函数的语法为: VLOOKUP(要找谁,在哪儿找,返回第几 ...

  • countif函数用法多,坑也不少!

    你好,我是刘卓.欢迎来到我的公号,excel函数解析.今天接着来聊countif函数.虽然它很好用,也深受小伙伴的喜爱,但是坑也不少,需小心避免. 今天就简单分享一下它坑在什么地方,具体的表现就是会区 ...

  • MessageBox()函数用法及参数详解

    MessageBox函数 显示模式对话框,其中包含系统图标,一组按钮和简要的特定于应用程序的消息,例如状态或错误信息.消息框返回一个整数值,指示用户单击的按钮. 语法 int MessageBox( ...

  • 通达信编码函数用法

    通达信编码函数用法

  • Excel中条件求和SUMIFS函数用法大全,学会不加班

    在数据分析过程中,都需要数据汇总,很多朋友都知道用数据透视表进行汇总,但有的时候,用数据透视表反而麻烦,用SUMIFS函数直接求出这个结果,这节我们来介绍SUMIFS函数从入门至精通! SUMIFS函 ...

  • 折腾了3天,我整理出史上最全的文本函数用法案例,实用到爆!(建议收藏)-第二期

    每天一点小技能 职场打怪不得怂 编按:昨天,我们学习了九大文本函数系列案例用法的第一期--<最魔性的文本函数,75%的Excel人都被它坑过,或许下一个轮到你-->.今天,我们继续学习文本 ...

  • vlookup函数用法大全,解决所有数据查询问题,收藏备用吧

    Vlookup函数相信大家都非常的熟悉,平常就是用它来查找下数据,其实对于数据合并,数据提取这样的问题我们也能使用vlookup函数来解决,今天跟大家盘点下vlookup的9种用法,带你彻底解决工作中 ...