免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2651 | 回复: 9
打印 上一主题 下一主题

[C] Help, 写个小程序遇到问题了 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-10-24 16:07 |只看该作者 |倒序浏览
写了个linux下面的小程序,用到了  strptime(), libcurl,  但是编译运行遇到各种BUG:
BUG 0:
编译告诉我:
  1. warning: implicit declaration of function 'strptime'
复制代码
但是我的编译指令里面有
-D XOPEN_SOURCE -D  __USE_XOPEN

BUG1:
如果我不是在整个程序的第一行开始运行
curl_easy_init();
报错。

BUG2:
关键代码片断:
  1. curl_easy_setopt( _curl,CURLOPT_URL, full_url);               
  2.                 curl_easy_setopt( _curl,CURLOPT_WRITEFUNCTION, solr_quest_doc_resp_write);               
  3.                 curl_easy_setopt( _curl,CURLOPT_WRITEDATA, read_buff);
复制代码
在这个solr_quest_doc_resp_write()函数里面,发现read_buff被改了。。。。

环境:
uname -an
  1. Linux LocalDomain.TestServer-15 2.6.32-71.el6.x86_64 #1 SMP Fri May 20 03:51:51 BST 2011 x86_64 x86_64 x86_64 GNU/Linux
复制代码
gcc --version
gcc (GCC) 4.4.4 20100726 (Red Hat 4.4.4-13)

rpm -q curl
curl-7.19.7-16.el6.x86_64


神啦,救救我吧。






论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
2 [报告]
发表于 2012-10-24 16:13 |只看该作者
       #define _XOPEN_SOURCE /* glibc2 needs this */
       #include <time.h>

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
3 [报告]
发表于 2012-10-24 16:20 |只看该作者
BUG0:

Manpage里只需要开一个宏.
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>

  4. #define _XOPEN_SOURCE
  5. #include <time.h>

  6. int main(int argc, char * const argv[]) {
  7.     struct tm tm_time;
  8.     strptime("%", "%%", &tm_time);
  9.     return 0;
  10. }
复制代码
BUG1:
不创建curl实例怎么操作curl?
http://curl.haxx.se/libcurl/c/curl_easy_init.html

BUG2:
curl_easy_setopt( _curl,CURLOPT_WRITEFUNCTION, solr_quest_doc_resp_write);   
这是设置一个回调函数, 每次接收到HTTP应答, 就会回调solr_quest_doc_resp_write函数, 并将HTTP应答的数据(可能是部分)传给这个函数, 让用户能够将应答数据写到buffer或者文件里.

curl_easy_setopt( _curl,CURLOPT_WRITEDATA, read_buff);
这是设置上面注册的回调函数solr_quest_doc_resp_write的回调参数, 也就是用户自定义数据, 每次都会当作userdata回调传递进solr_quest_doc_resp_write.
用户的read_buff在这里肯定是用来容纳HTTP应答的, 被修改太正常了.

论坛徽章:
0
4 [报告]
发表于 2012-10-24 16:27 |只看该作者
hellioncu 发表于 2012-10-24 16:13
#define _XOPEN_SOURCE /* glibc2 needs this */
       #include


这个肯定代码里面是有的。

论坛徽章:
0
5 [报告]
发表于 2012-10-24 16:28 |只看该作者
linux_c_py_php 发表于 2012-10-24 16:20
BUG0:

Manpage里只需要开一个宏.BUG1:


问题是,我传入的read_buff,它给我改了内容了。。。。

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
6 [报告]
发表于 2012-10-24 16:30 |只看该作者
fl3w 发表于 2012-10-24 16:27
这个肯定代码里面是有的。


可是你的“XOPEN_SOURCE”前面少一个下划线

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
7 [报告]
发表于 2012-10-24 16:31 |只看该作者
关键是你了解libcurl的目的是什么, 以及writefunction是干什么用的, 以及writedata是干什么用的... 否则怎么更你说都没用啊.

fl3w 发表于 2012-10-24 16:28
问题是,我传入的read_buff,它给我改了内容了。。。。

论坛徽章:
0
8 [报告]
发表于 2012-10-24 16:36 |只看该作者
hellioncu 发表于 2012-10-24 16:30
可是你的“XOPEN_SOURCE”前面少一个下划线


多谢,的确是这个问题,这个BUG解决了。

论坛徽章:
0
9 [报告]
发表于 2012-10-24 16:40 |只看该作者
linux_c_py_php 发表于 2012-10-24 16:31
关键是你了解libcurl的目的是什么, 以及writefunction是干什么用的, 以及writedata是干什么用的... 否则怎么 ...


用libcurl查询 http server,然后解析 http response.

writeData 放的是一个结构体,用来保存http response的解析结果,现在的问题是:curl或者gcc破坏了我定义好的writeData里面的结构体,,

这个程序,在 gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-52), curl-7.15.5-15.el5 下面是运行良好的。

现在我不知道到底是gcc,curl版本的问题,还是我的程序问题--在某个版本下面侥幸运行成功了。

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
10 [报告]
发表于 2012-10-24 16:49 |只看该作者
你确定不是你代码自己破坏的...vargrind查一下.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP