curl学习篇4——curl库示例:下载url中内容存入文件

说明
  本文章旨在总结备份、方便以后查询,由于是个人总结,如有不对,欢迎指正;另外,内容大部分来自网络、书籍、和各类手册,如若侵权请告知,马上删帖致歉。
  QQ 群 号:513683159 【相互学习】
内容来源

使用步骤:(easy interface)

  ①初始化libcurl运行环境:curl_global_init()【只能调用一次】
  ②获取句柄:curl_easy_init()(多线程支持,句柄很重要)【开始一个会话】
  ③设置传输选项,实现回调函数以完成用户特定任务等:curl_easy_setopt()
  ④完成传输任务:curl_easy_perform()
  ⑤释放句柄:curl_easy_cleanup()【结束一个会话】
  ⑥清理libcurl环境:curl_global_cleanup()【只能调用一次】

  
    curl_easy_setopt():setopt 即:set option.设置各种curl参数。

示例:下载url中内容,存到save_file文件中

#include <stdio.h>
#include <curl/curl.h>

const char *url = "https://www.baidu.com";
const char *save_file = "save_file.txt";

size_t receive_data(void *buffer, size_t size, size_t nmemb, FILE *file) {
    size_t r_size = fwrite(buffer, size, nmemb, file);
    return r_size;
}


int main() {

    FILE* file = fopen(save_file, "w+");                            	//打开文件(若无则创建文件)
    curl_global_init(CURL_GLOBAL_ALL);                                  //初始化libcurl运行环境
    CURL* handle = curl_easy_init();                                    //获取句柄(开始一个会话)
    curl_easy_setopt(handle, CURLOPT_URL, url);                         //CURLOPT_URL:获取/放置的完整URL
    curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, receive_data);      //CURLOPT_WRITEFUNCTION:用于存储输出数据,参数3为回调函数,回调函数参数以fwrite()语法
    curl_easy_setopt(handle, CURLOPT_WRITEDATA, file);                  //CURLOPT_WRITEDATA:用于回调函数的第四个参数,FILE *file
    curl_easy_perform(handle);                                          //执行curl_easy_setopt设置的操作
    fclose(file);                                                       //关闭文件流        
    curl_easy_cleanup(handle);                                          //释放句柄(结束一个会话)
    curl_global_cleanup();                                              //清理libcurl环境
    return 0;
}

执行步骤:

  ①将上述代码存入文件:load_file.c文件中。
  ②输入指令:gcc load_file.c -o load_file -lcurl 编译文件,要链接libcurl库(需安装好库)
  ③输入指令:./load_file 执行可执行文件
  即可得到输出文件。若是想下载图片,则可将url修改为图片地址,将文件改为对应图片后缀名。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值