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函数
fflush函数
fflush函数可以将缓冲区中任何未写入的数据写入文件中。不加的话都在内容都保存在了缓冲区,只有在调用fclose()函数的时候才写进去!
成功返回0,失败返回EOF。
int fflush(FILE * _File);
由于fflush是实时 的将缓冲区的内容写入磁盘,所以不要大量去使用,但如果是特别敏感的数据,可以通过fflush写入磁盘,防止由于电脑各种故障,内存的数据丢失。