The function fread reads nmemb elements of data, each size
bytes long, from the stream pointed to by stream, storing them at the
location given by ptr.
The function fwrite writes nmemb elements of data, each
size bytes long, to the stream pointed to by stream, obtaining
them from the location given by ptr.
For non-locking counterparts, see unlocked_stdio(3).
fread and fwrite return the number of items successfully read or
written (i.e., not the number of characters). If an error occurs, or the
end-of-file is reached, the return value is a short item count (or zero).
fread does not distinguish between end-of-file and error, and callers
must use feof(3) and ferror(3) to determine which occurred.