From aldeid
Jump to navigation Jump to search


  • Read block of data from stream
  • Reads an array of count elements, each one with a size of size bytes, from the stream and stores them in the block of memory specified by ptr.
  • The position indicator of the stream is advanced by the total amount of bytes read.
  • The total amount of bytes read if successful is (size*count).


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


Pointer to a block of memory with a size of at least (size*count) bytes, converted to a void*.
Size, in bytes, of each element to be read.
size_t is an unsigned integral type.
Number of elements, each one with a size of size bytes.
size_t is an unsigned integral type.
Pointer to a FILE object that specifies an input stream.

Return Value

  • The total number of elements successfully read is returned.
  • If this number differs from the count parameter, either a reading error occurred or the end-of-file was reached while reading. In both cases, the proper indicator is set, which can be checked with ferror and feof, respectively.
  • If either size or count is zero, the function returns zero and both the stream state and the content pointed by ptr remain unchanged.
  • size_t is an unsigned integral type.


#include <stdio.h>

    char fname[21] ;
    int n ;
    FILE * fstr ;
    printf ("File to open? ") ;
    scanf ("%20s", fname) ;
    fstr = fopen (fname, "r") ;
    while ( fread (&n, sizeof(int), 1, fstr), ! feof(fstr) )
        printf ("\n%d", n) ;
    fclose (fstr) ;