下面是一个使用CURLOPT_PROGRESSFUNCTION
回调函数的示例代码,用于在libcurl下载文件时显示进度:
#include <stdio.h>
#include <curl/curl.h>
// 进度回调函数
int progressCallback(void* clientp, double dltotal, double dlnow, double ultotal, double ulnow)
{
// 计算下载进度百分比
double progress = (dlnow / dltotal) * 100.0;
// 显示下载进度
printf("Progress: %.2f%%\r", progress);
fflush(stdout);
return 0;
}
int main()
{
CURL* curl = curl_easy_init();
if(curl) {
// 设置下载链接
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/file.txt");
// 设置进度回调函数
curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, progressCallback);
// 允许libcurl触发进度回调函数
curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0L);
// 执行下载操作
CURLcode res = curl_easy_perform(curl);
if(res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
// 清理资源
curl_easy_cleanup(curl);
}
return 0;
}
上述代码中,progressCallback
函数作为进度回调函数传递给了libcurl的CURLOPT_PROGRESSFUNCTION
选项。在每个数据块下载完成后,该回调函数会被触发,并接收当前已经下载和上传的字节数等参数。在这个示例中,回调函数简单地计算并显示下载进度百分比。
内容由零声教学AI助手提供,问题来源于学员提问