matlab fseek ftell,fseek函数、ftell函数和fflush函数

本文详细介绍了C语言中用于文件操作的fseek、ftell和fflush函数。fseek用于设置文件指针的位置,ftell返回文件指针的当前位置,而fflush确保缓冲区内容及时写入文件。通过示例代码,解释了这些函数在读写文件过程中的应用,帮助理解它们的功能和用法。
摘要由CSDN通过智能技术生成

1.fseek函数

int fseek(FILE * _File, long _Offset, int _Origin);

第一个参数stream为文件指针

第二个参数offset为偏移量,正数表示正向偏移,负数表示负向偏移

第三个参数origin设定从文件的哪里开始偏移,可能取值为:SEEK_CUR、 SEEK_END 或 SEEK_SET

SEEK_SET: 文件开头

SEEK_CUR: 当前位置

SEEK_END: 文件结尾

fseek(fp, 3, SEEK_SET);

fseek(fp,-4,SEEK_END);//为负数,倒着走!

int main()//写文件

{

char a[10] = {1,2,3,4,5,6,7,8,9,10};

FILE *P = fopen("D:\\temp\\a2.dat","wb");

fwrite(a,1,sizeof(a),p);

fclose(p);

return 0;

}

int main()//读这个文件1

{

char a[2];

FILE *p = fopen("D:\\temp\\a2.dat","rb");

fread(a,1,sizeof(a),p);//所有的c语言文件读写库都会自动维护fopen返回的指针

printf("%d %d\n",a[0],a[1]);//读出1 2

fread(a,1,sizeof(a),p);

printf("%d %d\n",a[0],a[1]);//读出3 4

}

===========================================

int main()//读这个文件2

{

char a[2];

FILE *p = fopen("D:\\temp\\a2.dat","rb");

fseek(p,2,SEEK_SET);//从文件开始往后位移两个字节

fread(a,1,sizeof(a),p);

printf("%d %d\n",a[0],a[1]);//读出3 4

fread(a,1,sizeof(a),p);

printf("%d %d\n",a[0],a[1]);//读出5 6

}

函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere为基准,偏移offset(指针偏移量)个字节的位置,函数返回0。如果执行失败则不改变stream指向的位置,函数返回一个非0值。

2.ftell函数

函数 ftell 用于得到文件位置指针当前位置相对于文件首的偏移字节数。在随机方式存取文件时,由于文件位置频繁的前后移动,程序不容易确定文件的当前位置。

long len = ftell(fp)

实验得出,超出文件末尾位置,还是返回0。往回偏移超出首位置,还是返回0,请小心使用。

3.fflush函数

d1adc6b94380

文件缓冲区说明.png

fflush函数

fflush函数可以将缓冲区中任何未写入的数据写入文件中。不加的话都在内容都保存在了缓冲区,只有在调用fclose()函数的时候才写进去!

成功返回0,失败返回EOF。

int fflush(FILE * _File);

由于fflush是实时 的将缓冲区的内容写入磁盘,所以不要大量去使用,但如果是特别敏感的数据,可以通过fflush写入磁盘,防止由于电脑各种故障,内存的数据丢失。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值