您的位置:首页 > Web前端

fseek 和fread、fwrite的区别

2010-03-27 22:20 232 查看
fseek 和fread、fwrite

 

#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(由第三个参数决

定)!

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  fp buffer stream file 文档