| FREAD(3) | Library Functions Manual | FREAD(3) |
fread, fwrite
— binary stream input/output
Standard C Library (libc, -lc)
#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);
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.
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 the product of size and
nmemb results in size_t 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.
The functions fread() and
fwrite() conform to ANSI
X3.159-1989 (“ANSI C89”).
| February 1, 2020 | NetBSD 11.0 |