CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COPYPOSTFIELDS, char *data);
Because data are copied, care must be taken when using this option in conjunction with CURLOPT_POSTFIELDSIZE(3) or CURLOPT_POSTFIELDSIZE_LARGE(3): If the size has not been set prior to CURLOPT_COPYPOSTFIELDS(3), the data is assumed to be a null-terminated string; else the stored size informs the library about the byte count to copy. In any case, the size must not be changed after CURLOPT_COPYPOSTFIELDS(3), unless another CURLOPT_POSTFIELDS(3) or CURLOPT_COPYPOSTFIELDS(3) option is issued.
CURL *curl = curl_easy_init(); if(curl) { char local_buffer[1024]="data to send"; curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); /* size of the data to copy from the buffer and send in the request */ curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, 12L); /* send data from the local stack */ curl_easy_setopt(curl, CURLOPT_COPYPOSTFIELDS, local_buffer); curl_easy_perform(curl); }