fread/fseek 耗时问题

http://bbs.csdn.net/topics/360228398

 

 

fseek

原型:int fseek(FILE *stream, long offset, int fromwhere);

功能:重定位流(数据流/文件)上的文件内部位置指针

注意:不是定位文件指针(文件指针是 FILE * fp 这样的),文件指针指向文件/流。位置指针指向文件内部的字节位置,随着文件的读取会移动,文件指针如果不重新赋值将不会改变指向别的文件。

 

函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere(偏移起始位置:文件头(SEEK_SET)0,当前位置(SEEK_CUR)1,文件尾(SEEK_END)2)为基准,偏移offset(指针偏移量)个字节的位置。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置。

 

返回值:成功,返回0,失败返回-1,并设置errno的值,可以用perror()函数输出错误。

 

        第一个参数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);把文件内部指针移动到离文件开头100字节处;

  fseek(fp,100L,1);把文件内部指针移动到离文件当前位置100字节处;

  fseek(fp,-100L,2);把文件内部指针退回到离文件结尾100字节处。

 

fread的功 能: 从一个流中读数据

fread 在使用过程中,首先由 FILE 确定一个文件指针 fp,fp 通过 fopen 将对象确定,fread此时对文件的操作是 文件内部位置指针移动一个字节再读取一个字节

 

函数原型: size_t fread( void * buffer , size_t size , size_t count , FILE * stream );    

参 数:  

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

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

3.元素个数(count )  

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

返回值:

(1)成功时返回实际读入的元素个数

(2)若文件达到末尾,则返回0

(3)出错时,返回-1

 

 

 

 

你可能感兴趣的:(C++)