有人可以解释写入用于curl选项CURLOPT_WRITEFUNCTION的函数的参数

时间:2011-04-18 10:32:03

标签: curl

来自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);

有人可以解释sizenmemb代表的论点吗? size是响应中的字符数吗?那么nmemb是什么?

2 个答案:

答案 0 :(得分:5)

显然是"size is the size of one data item, nmemb is the number of data items"。我的猜测是它的一些内部实现细节。 实际数据大小=大小* nmemb

回调函数的文档:https://curl.haxx.se/libcurl/c/CURLOPT_WRITEFUNCTION.html

示例代码:
https://github.com/curl/curl/blob/master/docs/examples/getinmemory.c

答案 1 :(得分:0)

这是为以下功能而设计的: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添加更多代码!