當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。