fseek函数的使用

来源:互联网 发布:java项目管理书籍 编辑:程序博客网 时间:2024/05/12 14:37

1、函数功能

用来读写一个数据块,

2、函数定义

 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字节处。

程序eg:

#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;
}


注:  fseek()不像lseek()会返回读写位置,因此必须使用ftell()来取得目前读写的位置。

原创粉丝点击