fread函数 & fwrite函数

来源:互联网 发布:让淘宝显示多个客服 编辑:程序博客网 时间:2024/05/22 15:49

1.fread函数

     函数原型:   

           size_t fread(void*buffer,size_tsize,size_tcount,FILE*stream);        功 能:从一个文件流中读数据,读取count个元素,每个元素size字节.如果调用成功返回count.如果调用成功则实际读取size*count字节  

参 数:buffer 用接收数据的内存地址,大小至少是 size*count 字节  

        size 单个元素的大小,单位是字节   

count元素的个数,每个元素是size字节  

stream 输入流   

返回值:实际读取的元素数.如果返回值与count(不是count*size)不相同,则可能文件结尾或发生错误ferrorfeof获取错误信息或检测是否到达文件结尾.

2.fwrite函数

     原型size_t  fwrite(const void* buffer, size_t size, size_t count, FILE* stream);   

     注意:这个函数以二进制形式对文件进行操作,不局限于文本文件  

    返回值:返回实际写入的数据块数目   

            1buffer:是一个指针,对fwrite来说,是要输出数据的地址;      2size:要写入内容的单字节数;  

            3count:要进行写入size字节的数据项的个数;  

            4stream:目标文件指针;   

            5)返回实际写入的数据项个数count。  

说明:写入到文件的哪里? 这个与文件的打开模式有关,如果是w+,则是从file pointer指向的地址开始写,替换掉之后的内容,文件的长度可以不变,stream的位置移动count个数;如果是a+,则从文件的末尾开始添加,文件长度加大,而且是fseek函数对此函数没有作用。



#include <stdio.h>

  struct mystruct
  {
  int i;
  char ch;
  };
  int main(void)
  {
  FILE *stream;
  struct mystruct s;
  if ((stream = fopen("TEST.$$$", "wb")) == NULL) /* open file TEST.$$$ */
  {
  fprintf(stderr, "Cannot open output file.\n");
  return 1;
  }
  s.i = 0;
  s.ch = 'A';
  fwrite(&s, sizeof(s), 1, stream); /* 写的struct文件*/
  fclose(stream); /*关闭文件*/
  return 0;
  }

原创粉丝点击