Next: , Previous: , Up: Stdio   [Contents][Index]


4.32 fwrite, fwrite_unlocked—write array elements

Synopsis

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

#define _BSD_SOURCE
#include <stdio.h>
size_t fwrite_unlocked(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);

#include <stdio.h>
size_t _fwrite_unlocked_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_unlocked is a non-thread-safe version of fwrite. fwrite_unlocked may only safely be used within a scope protected by flockfile() (or ftrylockfile()) and funlockfile(). This function may safely be used in a multi-threaded program if and only if they are called while the invoking thread owns the (FILE *) object, as is the case after a successful call to the flockfile() or ftrylockfile() functions. If threads are disabled, then fwrite_unlocked is equivalent to fwrite.

_fwrite_r and _fwrite_unlocked_r are simply reentrant versions of the above that take 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.

fwrite_unlocked is a BSD extension also provided by GNU libc.

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



Next: , Previous: , Up: Stdio   [Contents][Index]