NAME
fread,
fwrite —
binary stream input/output
LIBRARY
Standard C Library (libc, -lc)
SYNOPSIS
#include <stdio.h>
size_t
fread(
void *
restrict ptr,
size_t
size,
size_t nmemb,
FILE * restrict stream);
size_t
fwrite(
const void
* restrict ptr,
size_t
size,
size_t nmemb,
FILE * restrict 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.
Mixing
fread() and
fwrite() calls without
setting the file position explicitly using
fsetpos(3) between read and
write or write and read operations will lead to unexpected results because of
buffering the file pointer not being set to the expected position after each
operation completes. This behavior is allowed by ANSI C for efficiency and it
will not be changed.
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, the functions
return 0 and the state of
stream remains unchanged. 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”).