C语言函数fseek, fread, ftell的使用

来源:互联网 发布:kettle数据库增量同步 编辑:程序博客网 时间:2024/05/16 12:28

(1) int fseek(FILE *stream, long offset, int fromwhere);fseek 用于二进制方式(rb)打开的文件,移动文件读写指针位置.
fseek(in,-1L,1);   -- 文件流in, 零点为当前指针位置,SEEK_CUR 就是 1,  -1L -- 文件指针回退1个字节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字节处。

(2) fread

  功 能: 从一个流中读数据

  函数原型: size_tfread(void*buffer,size_tsize,size_tcount,FILE*stream); 

  参 数:

  1.用于接收数据的地址(指针)(buffer

  2.单个元素的大小(size) :单位是字节而不是位,例如读取一个整型数就是2个字节

  3.元素个数(count

  4.提供数据的文件指针(stream)

  返回值:成功读取的元素个数

(3)  ftell

  函数用于得到文件位置指针当前位置相对于文件首的偏移字节数.

(4) 例子

// read the file from hardwareFILE *fp = fopen(FileName, Mode); // Mode:rb (二进制读写)CC_BREAK_IF(!fp);fseek(fp,0,SEEK_END);*pSize = ftell(fp);fseek(fp,0,SEEK_SET);pBuffer = new unsigned char[*pSize];*pSize = fread(pBuffer,sizeof(unsigned char), *pSize,fp);fclose(fp);


 

0 0
原创粉丝点击