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

Hug*_*ing 7 curl

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

所以,你编写自己的函数来匹配这个原型:

 size_t write_data(void *buffer, size_t size, size_t nmemb, void *userp); 
Run Code Online (Sandbox Code Playgroud)

您告诉libcurl通过发出类似于此的函数将所有数据传递给此函数:

 curl_easy_setopt(easyhandle, CURLOPT_WRITEFUNCTION, write_data);
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下这些论点sizenmemb立场吗?size响应中的字符数是多少?那是什么nmemb

Pet*_*eng 6

显然大小是一个数据项的大小,nmemb是数据项的数量”。我的猜测是这是一些内部实现细节。在真实的数据大小= * nmemb个

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

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


小智 5

这是为以下功能而设计的: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);
Run Code Online (Sandbox Code Playgroud)

所以我们不需要添加更多代码fwrite