### 4.31 `fwrite`—write array elements

Synopsis

         #include <stdio.h>
         size_t fwrite(const void *restrict buf, size_t size,
             size_t count, FILE *restrict fp);

         #include <stdio.h>
         size_t _fwrite_r(struct _reent *ptr, const void *restrict buf, size_t size,
             size_t count, FILE *restrict fp);

Description
`fwrite` attempts to copy, starting from the memory location buf, count elements (each of size size) into the file or stream identified by fp. `fwrite` may copy fewer elements than count if an error intervenes.

`fwrite` also advances the file position indicator (if any) for fp by the number of characters actually written.

`_fwrite_r` is simply the reentrant version of `fwrite` that takes an additional reentrant structure argument: ptr.

Returns
If `fwrite` succeeds in writing all the elements you specify, the result is the same as the argument count. In any event, the result is the number of complete elements that `fwrite` copied to the file.

Portability
ANSI C requires `fwrite`.

Supporting OS subroutines required: `close`, `fstat`, `isatty`, `lseek`, `read`, `sbrk`, `write`.