專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

函數(shù)的復(fù)用性表現(xiàn)為庫(kù)

作者:佚名   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2013年06月09日   【字體:
//引入函數(shù)庫(kù)頭文件
 
#include <curl/curl.h>
#include <string.h>
//用#pragma comment預(yù)編譯命令,表示這個(gè)程序?qū)⑹褂胕bcurld_imp.lib這個(gè)庫(kù)文件
#pragma comment(lib,"libcurld_imp.lib")
//復(fù)制將數(shù)據(jù)寫入文件的回調(diào)函數(shù)

 
size_t write_data(void *ptr, size_t size,size_t nmemb,FILE *stream) {
    int written=fwrite(ptr,size,nmemb,stream);
    return written;
    }
//使用函數(shù)庫(kù)提供函數(shù)實(shí)現(xiàn)的文件下載函數(shù)

 
CURLcode download( char* url,
                   char* out)
{
 CURL *curl = NULL;
 FILE *fp = NULL;
 CURLcode res;
//調(diào)用函數(shù)庫(kù)中的curl_easy _init()函數(shù)完成初始化
curl = curl_easy_init();
if (curl)
{
    fp=fopen(out,"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);
//下載完成,進(jìn)行最后的清理工作
fclose(fp);
return res;
}
else
 { 
return CURLE_FAILED_INIT;
 }
}
//輔助函數(shù),用于獲取文件名
void getfilename(char* url, char* name)
{
char* pos = strrchr(url,"/");
if (NULL!=pos)
  {
  strcpy(name,pos+1);
  }
}

 

 
int main(int argc,char* argv[])
{
if (2!=argc)
 {
  return -1;
  }
 char* url = argv[1];
 char name[32];
 getfilename(url,name);
 CURLcode res = download(url,name);
if(CURLE_OK==res)
 {
  printf("great! download %s as %s succerfully.",url,name);
 }
 else
 {
 printf("sorry:cannot download %s.",url);
 }
 return 0;
}

 
關(guān)閉窗口

相關(guān)文章