Home C&C++函数库 c++ 语法 程序源码 Linux C库

fread

函数  <cstdio>

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

从流中读取数据块

从流中读取count个元素的数组,每个元素的大小为size bytes,并将它们存储在ptr指定的内存块中。

流的位置指示器按已读字节总数前进。

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

☲  参数



str 指向大小至少为(size*count)字节的内存块的指针,转换为void*。

size 要读取的每个元素的大小,以字节为单位。
size_t是一个无符号整型。

count 元素的数量,每个元素的大小为size字节。
size_t是一个无符号整型。

stream 指向指定输入流的FILE对象的指针。

☉  返回值



返回成功读取的元素总数。

如果这个数字与count参数不同,则可能是在读取时发生了读取错误或到达了文件结束。 在这两种情况下,都设置了合适的指示器,可以分别用ferrorfeof来检查。
如果size或count为0,则函数返回0,并且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加载到一个动态分配的内存缓冲区中,该缓冲区可用于以数组的形式操作文件的内容。

🍄  另请参阅



fwrite 将数据块写入流(function )
fgetc 从流中获取字符(function )
fscanf 从流读取格式化的数据(function )

联系我们 免责声明 关于CandCplus 网站地图