Fread

From aldeid
Jump to navigation Jump to search

Description

  • 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).

Syntax

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

Parameters

ptr
Pointer to a block of memory with a size of at least (size*count) bytes, converted to a void*.
size
Size, in bytes, of each element to be read.
size_t is an unsigned integral type.
count
Number of elements, each one with a size of size bytes.
size_t is an unsigned integral type.
stream
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.

Example

#include <stdio.h>

main()
{
    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) ;
}