我正在尝试使用 C 语言从雅虎财经获取股票报价。我知道如何获取我想要的文件,这很简单,您可以在浏览器中输入此 URL,例如:download.finance.yahoo.com/d/quotes .csv?s=YHOO+GOOG+MSFT&f=sl1d1t1c1hgvbap2 它会自动下载文件。 我的问题是我想使用 C 程序获取这个文件,我发现 libcurl 显然可以让你做到这一点,但我的努力没有任何意义。 我想知道如何使用 libcurl 获取这样的文件,或者如果无法使用 libcurl 如何从 URL 获取文件。
这是我的 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;
}
最佳答案
尝试使用他们的示例来获取文件:
http://curl.haxx.se/libcurl/c/getinmemory.html
描述:描述如何使用回调系统将文档提取到 RAM 缓冲区中,而无需写入文件。
如果需要,您应该将数据保存到文件中。
关于c - 如何使用 libcurl (或其他方式)从 HTTP 服务器检索文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27091024/