Может кто-нибудь объяснить аргументы для написания функции, используемой для опции curl CURLOPT_WRITEFUNCTION - PullRequest
7 голосов
/ 18 апреля 2011

С http://curl.haxx.se/libcurl/c/libcurl-tutorial.html:

Итак, вы пишете свою собственную функцию, которая соответствует этому прототипу:

 size_t write_data(void *buffer, size_t size, size_t nmemb, void *userp); 

Вы говорите libcurl передать все данные этой функциивыполнив функцию, подобную этой:

 curl_easy_setopt(easyhandle, CURLOPT_WRITEFUNCTION, write_data);

Может кто-нибудь объяснить, что означают аргументы size и nmemb?size количество символов в ответе?Тогда что такое nmemb?

Ответы [ 2 ]

6 голосов
/ 13 февраля 2016

Очевидно " размер - это размер одного элемента данных, nmemb - это количество элементов данных" . Я предполагаю, что это некоторые внутренние детали реализации. реальный размер данных = размер * nmemb .

Документация для функции обратного вызова: https://curl.haxx.se/libcurl/c/CURLOPT_WRITEFUNCTION.html

Пример кода:
https://github.com/curl/curl/blob/master/docs/examples/getinmemory.c

1 голос
/ 25 июля 2017

Это разработано для такой функции, как: size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);

FILE* out = fopen("out.html", "w");
curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)out);
curl_easy_setopt(easyhandle, CURLOPT_WRITEFUNCTION, fwrite);

Поэтому нам не нужно добавлять больше кода для fwrite как есть!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...