FREAD(3) | Library Functions Manual | FREAD(3)

# NAME

`fread`, `fwrite` — binary stream input/output

# SYNOPSIS

`#include <stdio.h>`

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

size_t
`fwrite`(const void *ptr, size_t size, size_t nmemb, FILE *stream);

# DESCRIPTION

The function `fread`() reads nmemb objects, each size bytes long, from the stream pointed to by stream, storing them at the location given by ptr.

The function `fwrite`() writes nmemb objects, each size bytes long, to the stream pointed to by stream, obtaining them from the location given by ptr.

# RETURN VALUES

The functions `fread`() and `fwrite`() advance the file position indicator for the stream by the number of bytes read or written. They return the number of objects read or written. If size or nmemb is 0, `fread`() and `fwrite`() return 0 with no change made to the stream. If the product of size and nmemb results in integer overflow, 0 is returned and errno is set to `EOVERFLOW`. If an error occurs, or the end-of-file is reached, the return value is a short object count (or zero).

The function `fread`() does not distinguish between end-of-file and error, and callers must use feof(3) and ferror(3) to determine which occurred. The function `fwrite`() returns a value less than nmemb only if a write error has occurred.

# SEE ALSO

read(2), write(2)

# STANDARDS

The functions `fread`() and `fwrite`() conform to ANSI X3.159-1989 (“ANSI C89”).

# HISTORY

The functions `fread`() and `fwrite`() first appeared in Version 7 AT&T UNIX.

March 12, 2015 | Debian