Я пытаюсь получить котировки акций из yahoo finance в C. Я знаю, как получить файл, который я хочу, достаточно просто ввести этот URL-адрес в свой браузер, например: download.finance.yahoo.com/d/quotes. csv? s = YHOO + GOOG + MSFT & f = sl1d1t1c1hgvbap2, и он автоматически загружает файл. Моя проблема в том, что я хотел получить этот файл с помощью программы на языке C, я нашел libcurl, который, по-видимому, позволяет вам это делать, но мои усилия не связаны ни с чем. Я хотел бы знать, как получить такой файл с помощью libcurl или если с libcurl невозможно получить файл из URL-адреса.Как получить файл с HTTP-сервера с помощью libcurl (или по-другому)?
Это мой Libcurl код для извлечения файла, который не работал (не ошибка просто пустой файл в конце):
#define CURL_STATICLIB
#include <stdio.h>
#include <curl/curl.h>
#include <curl/easy.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);
}
int main(void){
CURL* curl;
FILE* fp;
CURLcode res;
char* url="http://download.finance.yahoo/d/quotes.csv?s=YHOO+GOOG+MSFT&f=sl1d1t1c1hgvbap2";
//char* url="https://marketviewer.equiduct.com";
char outfilename[FILENAME_MAX]="test.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);
}
else {
printf("Error !!!\n");
}
return 0;
}
Эта ссылка показывает, как хранить данные в памяти, а не в файле. Кажется, что я использую одни и те же функции для получения данных, разница в том, что они хранят данные в памяти. – PiggyGenius
вы можете сохранить буфер в файл –
Да, я имел в виду, что помимо памяти они используют то, что я использую, чтобы получать данные и хранить их. Я не вижу разницы в получении, я что-то упускаю? – PiggyGenius