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
)
)
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(
)
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.
)
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.
)
and
fwrite(
)
conform to
ANSI X3.159-1989 (``ANSI C89'') .