生活服务
linux环境下c语言编程进行百度短网址的转换
2024-12-19 23:57  浏览:83

最近一直在研究有关于百度推出的一个短网址的转换,这个功能在网页上实现比较简单,只要输入长网址,百度页面就会生成对应的短网址。但是我现在要实现的是在linux环境下用c语言编程,然后将要转换的长网址当作参数传进去,要输出对应的短网址。我实现这个功能主要是用到curl编程,因为之前完全没接触到这方面的东西,所以前面就花了好几天的时间在学习curl编程,当然,只是针对性的学习了一下,并不是系统的学习,有兴趣的朋友可以自己去学习。

#include<stdio.h>

#include<curl/curl.h>

#include<stdlib.h>

#include<unistd.h>           //这个头文件不是必须的

#include<curl/types.h>     //这个头文件不是必须的

#include<curl/easy.h>     //这个头文件不是必须的

#include<string.h>

size_t process_data(void *buffer,size_t size,size_t nmemb,void *user_p) //这个是curl编程里面用到的回掉函数了,如果没有这个回掉函数的话,默认会把返回的结果输出//到屏幕中,返回结果并不全是我们想要的,所以我们要保存在文件中,然后再对文件进行操作。

{

      char tmp;

      FILE *fp = (FILE *)user_p; //user_p 这个指针保存的是用户在外界通过WRITEDATA给这个回调函数传递的参数指针。

      size_t return_size = fwrite(buffer,size,nmemb,fp); //这个像指定的文件输入想要保存的数据。在这里,我之前一直不明白返回的结果到底在那里,后来经过了一番试之

   //后发现curl编程浏览器返回的结果都是存在buffer指针中,所以我们在这里通过fwrite函数将buffer指针指向的内容写到fp文件指针指向的文件里面

      fseek(fp,12,0);//这个函数把文件的位置指针跳过12个字节到达制定位置,由于字符是一个字节,所以就是跳过12个字节

      printf(" The transformed url is :");

      tmp = fgetc(fp);//把我们需要的网址提取出来,其余的字符跳过

      while(tmp != EOF)

      {

             if('\' == tmp){

                    tmp = fgetc(fp);

                    continue;         

             }

             else if('"' == tmp) break;

              putchar(tmp);

              tmp = fgetc(fp);

      }

       printf(" ");

}

 

int main(int argc,char *argv[])

{

     char str1[500]="url=";//因为这个短网址的转换的格式是像http://dwz.cn/create.php/发送url=长网址的格式才能进行转换

     char *str2=argv[1];//argv[1]保存的是我们传进去的网址

     strcat(str1,str2);

     CURLcode return_code:

     return_code = curl_global_init(CURL_GLOBAL_ALL);

     if(CURLE_OK != return_code)

      {

               printf("init libcurl failed. ");

               return -1;

      }

      CURL *easy_handle = curl_easy_init();

      if(NULL == easy_handle)

       {

            printf("get a easy handle failed ");

             return -1;

       }

       FILE * fp =fopen("record.txt","w+");//这是创建一个可读写的文本文件,这个地方要特别注意,我就是在这个地方卡了很久。mode r为打开只读的文件,w为打开只写的

   //文件,然后我就自然而然的认为rw是打开可读写的文件,事实上并不是如此,经过我亲自测试,如果模式为wr的话,只能输出第一个字符,而且还是乱码。但如果是rw

   // 的话,可以正确的输出第一个字符,但是上面的那个while循环进不去。在这里只能用r+  这是fopen函数有列出的模式。所以我认为这个模式应该是有严格要求的

       curl_easy_setopt(easy_handle,CURLOPT_URL,"http://dwz.cn/create.php");

       curl_easy_setopt(easy_handle,CURLOPT_WRITEFUNCTION,&process_data); 调用回调函数

       curl_easy_setopt(easy_handle,CURLOPT_WRITEDATA,fp);  像回调函数传递参数

       curl_easy_setopt(easy_handle,CURLOPT_POST,1);

       curl_easy_setopt(easy_handle,CURLOPT_POSTFIELDS,str1);//这个是传数据的函数,这个地方我也卡了很久,之前编译了很久一直没通过,后来不知道为什么

    //又可以了,可能因为libcurl是跨平台的吧,具体问题我也不知道

        curl_easy_perform(easy_handle);

       fclose(fp);

        curl_easy_cleanup(easy_handle);

        curl_global_cleanup();

        return 0;

}

 

注意编译的时候后面要加上-lcurl

头文件当中有个<curl/types.h>文件,编译的时候会提示没有这个头文件,这是因为在新版中把curl/types.h合并到了curl/curl.h中

解决方法是:

    cd /usr/include/curl/

    以上就是本篇文章【linux环境下c语言编程进行百度短网址的转换】的全部内容了,欢迎阅览 ! 文章地址:http://mip.xhstdz.com/xwnews/585.html 
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 物流园资讯移动站 http://mip.xhstdz.com/mobile/ , 查看更多   
最新文章
再次确认!中国将从零实现全球第二:设立自己的域名根服务器
大家都知道,当下全球各国之间的竞争和比拼不仅仅只是经济和军事,更多的则是科技实力的较量,毕竟所谓的经济和军事发展都需要依
Faiss(4):索引(Index)
MethodClass nameindex_factoryMain parametersBytes/vectorExhaustiveCommentsExact Search for L2IndexFlatL2"Flat"d4
企业网络推广优化策略,高效市场渗透秘籍揭晓
企业网络推广优化解析:通过精准定位目标市场,采用多元化营销策略,包括搜索引擎优化、社交媒体营销、内容营销等,提升品牌曝光
微信输入法来了,其他输入法接得住吗?
几天前,“微信键盘”在更新中更名为“微信输入法”。不知道你们会不会跟果子一样,第一次听到“微信键盘”的时候,以为微信又发
外链规划师:淘宝外链建设规划及执行方案
外链建设对于任何网站的成功都至关重要,尤其是像淘宝这样的电子商务平台。外链可以帮助提高网站的搜索引擎排名、增加流量并建立
手机百度 13.63.5.10
快来告诉我们你的开学经历吧!带话题#人生开学季#发布动态,即可参与抽奖瓜分千元京东卡,优质内容更有机会被官方账号推送,获得
2024汇总!咸阳市各区县科技型中小企业认定奖补、申报认定标准及科小评价流程
咸阳市企业朋友们,小编今天整理了咸阳市各区县科技型中小企业认定相关内容,如果有咸阳市秦都区、杨陵区、渭城区、三原县、泾阳
「沈阳关键词排名优化软件」沈阳关键词推广公司
1、沈阳推广抖音seo优化好处2、关键词优化排名有哪些牛霸天的软件.?3、有哪些常用的seo排名软件?4、网站优化排名软件5、常用的s
如何在巨量引擎广告上投放广告?电商平台信息流广告推广
主要设置过程:创建广告组,创建广告计划,创建广告创意。打开巨量引擎广告投放平台,注册登录后进入后台,如下图所示点击“推广
广元百度推广优化,企业市场抢占新引擎
广元百度推广优化服务助力企业抢占市场先机,通过精准定位和优化策略,提升品牌曝光度,提高率,实现快速拓展业务。在互联网时代
相关文章