我想做什么:
我正在尝试编写一个c程序,它将从URL下载文件并将其保存在本地,我找到了以下指南,只要我硬编码文件名,它就完全符合我的要求:
我的问题是什么:
文件每小时更新一次,每个新文件的日期和时间都会标记。我可以使用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指针和字符串之间的区别有关,但我不确定是什么。
关于我做错了什么以及接下来应该尝试什么的任何想法?
答案 0 :(得分:0)
您应该在libcurl-using程序中使用CURLOPT_VERBOSE选项并检查正在发送的请求/响应。
我的猜测是你以某种方式只是要求错误的URL,服务器用404或其他没有实际响应正文内容的东西做出响应。
curl_easy_setopt(curl,CURLOPT_URL,网址);打电话给你显示似乎很好,因为它需要一个零终止char *,这就是你发送给它。当然,VERBOSE输出还会显示libcurl是否以预期的方式处理输入。