В настоящее время я пытаюсь создать программу обновления для моего программного проекта.Мне нужно, чтобы он мог загружать несколько файлов, я не против, если они загружаются синхронно или один за другим, что проще (размер файла не является проблемой).Я последовал примеру с веб-страницы 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]
.Я чувствую, что это просто глупая ошибка, которую я совершаю, но решение не приходит на ум.Спасибо!