# FatFs - f_write

## f_write

The f_write writes data to a file.

    FRESULT f_write (
      FIL* fp,          /* [IN] Pointer to the file object structure */
      const void* buff, /* [IN] Pointer to the data to be written */
      UINT btw,         /* [IN] Number of bytes to write */
      UINT* bw          /* [OUT] Pointer to the variable to return number of bytes written */
    );

#### Parameters

fp
  Pointer to the open file object structure. If a null pointer is given, the function fails with `FR_INVALID_OBJECT`.
buff
  Pointer to the data to be written.
btw
  Specifies number of bytes to write in range of `UINT` type. If the data needs to be written fast, it should be written in large chunk as possible.
bw
  Pointer to the variable in `UINT` type that receives the number of bytes written. This value is always valid after the function call regardless of the function return code. If the return value is equal to `btw`, the function return code should be `FR_OK`.

#### Return Values

FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_DENIED, FR_INVALID_OBJECT, FR_TIMEOUT

#### Description

The function starts to write data to the file at the file offset pointed by read/write pointer of the file object. The read/write pointer advances as number of bytes written. After the function succeeded, `*bw` should be checked to detect the disk full. In case of `*bw` < `btw`, it means the volume got full during the write operation. The function can take a time when the volume is full or close to full.

#### QuickInfo

Available when `FF_FS_READONLY == 0`.

#### Example

Refer to the example in `f_open`.

#### See Also

`f_open, f_read, fputc, fputs, fprintf, f_close, FIL`

Return