Writes data to a stream.

size_t fwrite(
   const void *buffer,
   size_t size,
   size_t count,
   FILE *stream 


  • buffer
    Pointer to data to be written.

  • size
    Item size in bytes.

  • count
    Maximum number of items to be written.

  • stream
    Pointer to FILE structure.

Return Value

fwrite returns the number of full items actually written, which may be less than count if an error occurs. Also, if an error occurs, the file-position indicator cannot be determined. If either stream or buffer is a null pointer, the function invokes the invalid parameter handler, as described in Parameter Validation. If execution is allowed to continue, this function sets errno to EINVAL and returns 0.


The fwrite function writes up to count items, of size length each, from buffer to the output stream*.* The file pointer associated with stream (if there is one) is incremented by the number of bytes actually written. If stream is opened in text mode, each carriage return is replaced with a carriage-return – linefeed pair. The replacement has no effect on the return value.

This function locks the calling thread and is therefore thread-safe. For a non-locking version, see _fwrite_nolock.



Required header



For additional compatibility information, see Compatibility in the Introduction.


See the example for fread.

.NET Framework Equivalent


See Also


Stream I/O