fread

Description

Reads data from a stream.

#include <stdio.h>

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

buffer Storage location for data  
size Item size in bytes  
count Maximum number of items to be read  
stream Pointer to FILE structure  

Remarks

The fread function reads up to count items of size bytes from the input stream and stores them in buffer. The file pointer associated with stream (if there is one) is increased by the number of bytes actually read.

If the given stream is opened in text mode, carriage-return–line-feed pairs are replaced with single line-feed characters. The replacement has no effect on the file pointer or the return value.

The file-pointer position is indeterminate if an error occurs. The value of a partially read item cannot be determined.

Return Value

The fread function returns the number of full items actually read, which may be less than count if an error occurs or if the file end is encountered before reaching count.

The feof or ferror function should be used to distinguish a read error from an end-of-file condition. If size or count is 0, fread returns 0 and the buffer contents are unchanged.

Compatibility

Standards:ANSI, UNIX

16-Bit:DOS, QWIN, WIN, WIN DLL

32-Bit:DOS32X

See Also

fwrite, _read

Example

/* FREAD.C: This program opens a file named FREAD.OUT and writes 25

* characters to the file. It then tries to open FREAD.OUT and

* read in 25 characters. If the attempt succeeds, the program

* displays the number of actual items read.

*/

#include <stdio.h>

void main( void )

{

FILE *stream;

char list[30];

int i, numread, numwritten;

/* Open file in text mode: */

if( (stream = fopen( "fread.out", "w+t" )) != NULL )

{

for ( i = 0; i < 25; i++ )

list[i] = 'z' - i;

/* Write 25 characters to stream */

numwritten = fwrite( list, sizeof( char ), 25, stream );

printf( "Wrote %d items\n", numwritten );

fclose( stream );

}

else

printf( "Problem opening the file\n" );

if( (stream = fopen( "fread.out", "r+t" )) != NULL )

{

/* Attempt to read in 25 characters */

numread = fread( list, sizeof( char ), 25, stream );

printf( "Number of items read = %d\n", numread );

printf( "Contents of buffer = %.25s\n", list );

fclose( stream );

}

else

printf( "Was not able to open the file\n" );

}

Output

Wrote 25 items

Number of items read = 25

Contents of buffer = zyxwvutsrqponmlkjihgfedcb