我正在嘗試爲我的軟件項目創建一個更新程序。我需要它能夠下載多個文件,我不介意他們是同步下載還是一個接一個地下載,無論更簡單(文件大小不是問題)。我跟着從libcurl的網頁以及其他一些資源的例子,這個想出了:在C++中使用libcurl下載多個文件
#include <iostream>
#include <stdio.h>
#include <curl/curl.h>
#include <string.h>
size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream) {
size_t written;
written = fwrite(ptr, size, nmemb, stream);
return written;
}
int main(void){
for (int i = 0; i < 2;){ //download 2 files (loop twice)
CURL *curl;
FILE *fp;
CURLcode res;
char *url = "http://sec7.org/1024kb.txt"; //first file URL
char outfilename[FILENAME_MAX] = "C:\\users\\grant\\desktop\\1024kb.txt";
curl = curl_easy_init();
if (curl){
fp = fopen(outfilename,"wb");
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
fclose(fp);
}
url = "http://sec7.org/index.html"; //I want to get a new file this time
outfilename[FILENAME_MAX] = "C:\\users\\grant\\desktop\\index.html";
}
return 0;
}
的第一個問題是,如果我刪除新的文件分配(*url = "http://..."
),只是嘗試循環的下載代碼的兩倍,該程序只是停止響應。這種情況發生在程序中不止一次調用下載的任何組合中。另一個問題是我無法更改字符數組outfilename[FILENAME_MAX]
的值。我覺得這只是我正在做的一些愚蠢的錯誤,但卻沒有想到任何解決方案。謝謝!
老兄,你的for循環需要'我++' –
我的不好,我試圖實現其他的東西,而不是我++,我忘了添加它之前,我發佈的問題。 – llk