变量文件名和Curlib

时间:2013-04-07 03:20:28

标签: c variables filenames libcurl

我想做什么:

我正在尝试编写一个c程序,它将从URL下载文件并将其保存在本地,我找到了以下指南,只要我硬编码文件名,它就完全符合我的要求:

http://siddhantahuja.wordpress.com/2009/04/12/how-to-download-a-file-from-a-url-and-save-onto-local-directory-in-c-using-libcurl/

我的问题是什么:

文件每小时更新一次,每个新文件的日期和时间都会标记。我可以使用time.h预测所需的文件名并提取当前的日期和时间信息,但是我无法弄清楚如何将这些信息组合成我可以传递给curlib命令的表单。

当前尝试的解决方案(不起作用):

char *url;                       //char pointer to URL
url = malloc((sizeof(char)*51+1);//allocate memory to pointer address is 51 characters + \0 terminator
sprintf(url, "http://>URL Info</FILENAME%.4d%.2d%.2d%.2d30.jpg\0", year, month, date, hour);
                                 //ie http://example.com/files/FILENAME201304071030.jpg

字符串正在填充,因为我可以用printf输出它,但它似乎没有传递给curlib命令:

curl_easy_setopt(curl, CURLOPT_URL, url);

它创建目标文件,但文件为空。我怀疑它与char指针和字符串之间的区别有关,但我不确定是什么。

关于我做错了什么以及接下来应该尝试什么的任何想法?

1 个答案:

答案 0 :(得分:0)

您应该在libcurl-using程序中使用CURLOPT_VERBOSE选项并检查正在发送的请求/响应。

我的猜测是你以某种方式只是要求错误的URL,服务器用404或其他没有实际响应正文内容的东西做出响应。

curl_easy_setopt(curl,CURLOPT_URL,网址);打电话给你显示似乎很好,因为它需要一个零终止char *,这就是你发送给它。当然,VERBOSE输出还会显示libcurl是否以预期的方式处理输入。