fseek(f,0,SEEK_SET);

意思是把文件指针指向文件的开头

fseek
函数名: 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.
程序例:

#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_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>
#defineN5
typedefstructstudent{
longsno;
charname[10];
floatscore[3];
}STU;
voidfun(char*filename,STUn)
{
FILE*fp;
fp=fopen(filename,"rb+");
fseek(fp,-1L*sizeof(STU),SEEK_END);
fwrite(&n,sizeof(STU),1,fp);
fclose(fp);
}
voidmain()/*修改覆盖最后一个学生数据*/
{
STUt[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}};
STUn={10006,"ZhaoSi",55,70,68},ss[N];
inti,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("\nTheoriginaldata:\n\n");
for(j=0;j<N;j++)
{
printf("\nNo:%ldName:%-8sScores:",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("\nThedataaftermodifing:\n\n");
fp=fopen("student.dat","rb");
fread(ss,sizeof(STU),N,fp);
fclose(fp);
for(j=0;j<N;j++)
{
printf("\nNo:%ldName:%-8sScores:",ss[j].sno,ss[j].name);
for(i=0;i<3;i++)printf("%6.2f",ss[j].score[i]);
printf("\n");
}
}

fseek(f,0,SEEK_SET);相关推荐

  1. c语言利用fun求最小值,c语言:请编写函数fun(),他的功能是:求f(0)到f(50)的最小值,已知:f(0)=f(1)=1,f(2)=0,f...

    #include #include int f(int n) { if (n == 0 || n == 1) { return 1; } if (n == 2) { return 0; } retur ...

  2. 试用与非门和异或门设计一个组合逻辑电路来判断输入的四位二进制数能否被5整除(0可被5整除), 若可被整除则输出F=1, 否则F=0(山东大学二〇二〇年数字电路906综合题第4题)(全网第一手资料)

    (15分)4.试用与非门和异或门设计一个组合逻辑电路来判断输入的四位二进制数能否被5整除(0可被5整除), 若可被整除则输出F=1, 否则F=0. 根据题目的描述, 可以得到本题的真值表. 第4题真值 ...

  3. 【C# 练习】用函数递归计算 f(n)=f(n-1)+f(n-2) f(0)=2 f(1)=3

    题目:f(n)=f(n-1)+f(n-2) f(0)=2:     f(1)=3 ,求f(40) 这个题需要用到函数递归来计算, 我们已知 f(0)和 f(1), 那么通过计算, f(2)就是 f(0 ...

  4. Kaggle入门预测赛,手写数字识别Digit Recognizer,使用Kaggle kernel作答,F=0.98

    1.问题和描述 直接在kaggle左边的competition竞赛中搜索Digit Recognizer即可进入赛题页面: https://www.kaggle.com/c/digit-recogni ...

  5. c语言:已知斐波那契数列定义:f(0) = 0; f(1) = 1;f(n) = f(n-1) + f(n-2);请计算并输出数列的前n(n<=30)项。

    #include<stdio.h> int main() {     int a[30],x;     a[0]=0;     a[1]=1;     scanf("%d&quo ...

  6. 使用 libevent 和 libev 提高网络应用性能

    简介 许多服务器部署(尤其是 web 服务器部署)面对的最大问题之一是必须能够处理大量连接.无论是通过构建基于云的服务来处理网络通信流,还是把应用程序分布在 IBM Amazon EC 实例上,还是为 ...

  7. 高效并发处理之libevent

    出处:http://www.oschina.net/question/12_15837 构建现代的服务器应用程序需要以某种方法同时接收数百.数千甚至数万个事件,无论它们是内部请求还是网络连接,都要有效 ...

  8. 使用flex 做关键词、正则表达式过滤

    编写 .l文件 %{ c 头文件 和变量定义 %} %% {pattern} {c action code;} %% c function definition compile && ...

  9. DSP学习 -- cJSON使用教程

    如需转载请注明出处 https://juyou.blog.csdn.net/article/details/107870229 JSON 需要简单的了解一下.谁知道啥时候用上呢~ 一.JSON简介 参 ...

  10. Harfbuzz API 基本用法

    [Harfbuzz](http://harfbuzz.org/ 是一个 OpenType 文本整形引擎.当前的 Harfbuzz 代码库,之前被称为 harfbuzz-ng,版本号为 1.x.x,它是 ...

最新文章

  1. android button imagebutton 区别,Android 开发入门篇
  2. Signal和slot的声明和连接
  3. 百度信息流和搜索业务中的弹性近线计算探索与应用
  4. 培养积极状态的八个方法
  5. java中集合类的转换_Java中的两个常用工具类及集合数组的相互转换
  6. 移动建模平台元数据存储架构演进
  7. 在lcd屏幕上窗口显示一个bitmap_SmartDrop——LED/LCD大屏内容投屏管理软件
  8. JEECG_3.7.2新版本入门讲解—UI标签库专题-张代浩-专题视频课程
  9. 远程桌面超出最大连接数问题
  10. java的runtime error_Java常见的运行起异常(runtime exception)
  11. 下载丨10月数据库技术通讯:HAIP在两个私网网卡上发生互换,导致ASM实例启动失败...
  12. python 没有控件_PyQt自定义控件未显示
  13. 最新的jQuery插件和JavaScript库
  14. js swipe 图片滑动控件实现 任意尺寸适用任意屏幕
  15. Arduino+SIM900A+继电器
  16. C语言学习-翁凯(目录总章)
  17. iptables中DNAT、SNAT和MASQUERADE的原理
  18. IllegalArgumentException,Mapped Statements collection does not contain value for xxxxx
  19. 不要在本该奋斗的年纪选择了安逸
  20. python修改图片尺寸和DPI

热门文章

  1. OpenCV4图像处理算子不完全手册-应用篇
  2. 从IAP升级到涂鸦OTA升级介绍 (下)
  3. ubuntu20.04安装搜狗拼音输入法
  4. Silverlight IReader阅读器第二版
  5. Redis入门学习笔记--附Redis工具类
  6. zemax中如何和matlab中通信,如何在ZEMAX及MATLAB之间通信.doc
  7. 微信小程序之组件传值
  8. 「Python海龟画图」利用海龟画笔绘制谢尔宾斯基三角形
  9. http 请求 返回状态码 405 的问题
  10. Origin软件的安装