fseek 和fread、fwrite的区别

fseek freadfwrite

 

#include"stdio.h"

fseek(文件类型指针fp,位移量,起始点)

 函数功能:把与fp有关的文件位置指针放到一个指定位置其中,位移量long型数据,它表示位置指针相对于起始点移动的字节数。如果位移量是一个正数,表示从起始点开始往文件尾方向移动;如果位移量是一个负数,则表示从起始点开始往文件头方向移动。

 

起始点不能任意设定,它只能是在stdio.h中定义的三个符号常量之一:

起始点

对应的数字

  代表的文件位置

SEEK_SET

0

  文件开头

SEEK_CUR

1

  文件当前位置

SEEK_END

2

  文件末尾

 

例如:

        fseek(fp,50L,0);或fseek(fp,50L,SEEK_SET);

    其作用是将位置指针移到离文件头50个字节处。

 

ftell   

调用形式:

    #include"stdio.h"

    long ftell(fp);

    函数功能:得到流式文件中的当前位置,其返回值是当前位置相对于文件开头的字节数。

    返回值:出错时返回-1L

size_t   fread(   void   *buffer,   size_t   size,   size_t   count,   FILE   *stream   );  

  buffer   是读取的数据存放的内存的指针  

  size       是每次读取的字节数  

  count     是读取次数  

  strean   是要读取的文件的指针  

  例如   从文件fp里读取100个字节   可用以下语句  

   

  fread(buff,100,1,fp)  

  fread(buff,50,2,fp)  

  fread(buff,1,100,fp)  

 

如果想实现从某个文件中一次次N个字节般读出来,那建议不要用

             read = fread(buff,N,1,data_file);

       因为就算当文件的字节数比N大,但这时strlen(buff)绝不是N个字节大小!!也不是read个字节大小!!

查帮助文档,可知,read是指成功读入的单元块数,这里对应的就是,read要么是1,要么是0(由第三个参数决

定)!

 

你可能感兴趣的:(fseek 和fread、fwrite的区别)