当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C语言 fread用法及代码示例


C语言stdio头文件(stdio.h)中fread函数的用法及代码示例。

用法:

size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );
从流中读取数据块
读取一个数组数数元素,每个元素的大小为尺寸个字节,来自并将它们存储在指定的内存块中ptr

流的位置指示符以读取的字节总数超前。

如果成功读取的字节总数为(size*count)

参数

ptr
指向至少具有至少一个大小的内存块的指针(size*count)字节,转换为void*
size
要读取的每个元素的大小(以字节为单位)。
size_t是无符号整数类型。
count
元素数量,每个元素的大小为尺寸个字节。
size_t是无符号整数类型。
stream
指向一个指针FILE指定输入流的对象。

返回值

返回成功读取的元素总数。
如果此数字与数数参数,发生读取错误或文件结束在阅读时已到达。在这两种情况下,都设置了正确的指示器,可以使用ferrorfeof, 分别。
如果有尺寸或者数数为零,该函数返回零,并且流状态和所指向的内容ptr维持不变。
size_t是无符号整数类型。

示例

/* fread example: read an entire file */
#include <stdio.h>
#include <stdlib.h>

int main () {
  FILE * pFile;
  long lSize;
  char * buffer;
  size_t result;

  pFile = fopen ( "myfile.bin" , "rb" );
  if (pFile==NULL) {fputs ("File error",stderr); exit (1);}

  // obtain file size:
  fseek (pFile , 0 , SEEK_END);
  lSize = ftell (pFile);
  rewind (pFile);

  // allocate memory to contain the whole file:
  buffer = (char*) malloc (sizeof(char)*lSize);
  if (buffer == NULL) {fputs ("Memory error",stderr); exit (2);}

  // copy the file into the buffer:
  result = fread (buffer,1,lSize,pFile);
  if (result != lSize) {fputs ("Reading error",stderr); exit (3);}

  /* the whole file is now loaded in the memory buffer. */

  // terminate
  fclose (pFile);
  free (buffer);
  return 0;
}


此代码加载myfile.bin放入动态分配的内存缓冲区,该缓冲区可用于将文件内容作为数组进行操作。

相关用法


注:本文由纯净天空筛选整理自C标准库大神的英文原创作品 C fread function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。