---
name: "CURLOPT_WRITEDATA"
section: "3"
platform: "macos"
package: "curl"
version: "166.0.0.0.1"
release: "macOS 26.5"
platforms: ["linux", "macos"]
url: "https://new.carta.tech/CURLOPT_WRITEDATA"
---

# CURLOPT\_WRITEDATA(3)

pointer passed to the write callback

## NAME

CURLOPT\_WRITEDATA - pointer passed to the write callback

## SYNOPSIS

```
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_WRITEDATA, void *pointer);
```

## DESCRIPTION

A data *pointer* to pass to the write callback. If you use the *[CURLOPT\_WRITEFUNCTION(3)](/CURLOPT_WRITEFUNCTION/3.md)* option, this is the pointer you get in that callback's fourth and last argument. If you do not use a write callback, you must make *pointer* a 'FILE *' (cast to 'void* ') as libcurl passes this to *[fwrite(3)](/fwrite/3.md)* when writing data.

The internal *[CURLOPT\_WRITEFUNCTION(3)](/CURLOPT_WRITEFUNCTION/3.md)* writes the data to the FILE \* given with this option, or to stdout if this option has not been set.

If you are using libcurl as a Windows DLL, you **MUST** use a *[CURLOPT\_WRITEFUNCTION(3)](/CURLOPT_WRITEFUNCTION/3.md)* if you set this option or you might experience crashes.

## DEFAULT

By default, this is a FILE \* to stdout.

## PROTOCOLS

Used for all protocols.

## EXAMPLE

A common technique is to use the write callback to store the incoming data into a dynamically growing allocated buffer, and then this *[CURLOPT\_WRITEDATA(3)](/CURLOPT_WRITEDATA/3.md)* is used to point to a struct or the buffer to store data in. Like in the getinmemory example: https://curl.se/libcurl/c/getinmemory.html

## AVAILABILITY

Available in all libcurl versions. This option was formerly known as CURLOPT\_FILE, the name *[CURLOPT\_WRITEDATA(3)](/CURLOPT_WRITEDATA/3.md)* was added in 7.9.7.

## RETURN VALUE

This returns CURLE\_OK.

## SEE ALSO

[**CURLOPT\_HEADERDATA**(3)](/CURLOPT_HEADERDATA/3.md), [**CURLOPT\_READDATA**(3)](/CURLOPT_READDATA/3.md), [**CURLOPT\_WRITEFUNCTION**(3)](/CURLOPT_WRITEFUNCTION/3.md)
