2011-06-06 75 views
0
#define CURL_STATICLIB 
#include <stdio.h> 
#include <curl/curl.h> 
#include <curl/types.h> 
#include <curl/easy.h> 
#include <string> 

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) { 
    CURL *curl; 
    FILE *fp; 
    CURLcode res; 
    char *url = "http://localhost/aaa.txt"; 
    char outfilename[FILENAME_MAX] = "C:\\bbb.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); 
    } 
    return 0; 
} 

有人发布了这个代码的问题。但在执行此文件时,下载的文件不会保存在C驱动器中,而是将生成一个名为“C:\ cat.txt”的新txt文件...我希望下载的文件将存储在我想要的硬盘中程。任何一个可以帮我...下载的文件没有保存在给定的位置

+0

请使用代码块功能插入代码的一个不同的二进制否则将难以阅读和查找错误......这也会淡化观众对这个问题的兴趣。 – rsjethani 2011-06-06 11:02:32

+0

@ryanlancer代码块是char * url =“http://localhost/aaa.txt”; char outfilename [FILENAME_MAX] =“C:\\ bbb.txt”; ---->问题出现在这里 – Nikhil 2011-06-06 11:05:28

回答

0

首先,默认CURLOPT_WRITEFUNCTION接受FILE *和使用任何的被设定CURLOPT_WRITEDATA,所以你不需要,除非你使用curl作为覆盖函数使用fwrite一个Win32 DLL。

此外,您不检查从fopen返回,这可能会失败。

我怀疑在这种情况下,你要么不重新编译代码,或正在从你建立

相关问题