【发布时间】:2011-01-21 20:10:40
【问题描述】:
我有点问题,这是我的代码(我使用的是 C):
#include <stdio.h>
#include <curl/curl.h>
#include <stdlib.h>
#include <json/json.h>
size_t callback_func(void *ptr, size_t size, size_t count, void *stream) {
//json_object *json_obj = json_tokener_parse(ptr);
printf ("%s",(char*)ptr);
return count;
}
int main(void)
{
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://stream.twitter.com/1/statuses/filter.json?track=http");
curl_easy_setopt(curl, CURLOPT_USERPWD, "Firrus:password");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, callback_func);
curl_easy_perform(curl);
/* always cleanup */
curl_easy_cleanup(curl);
}
return 0;
}
问题在于,每次打印 ptr 时,顶部还会输出三个奇怪(看似随机)的字符,例如77D 或 6DA。这些字符是什么意思?我怎样才能删除它们?
【问题讨论】:
-
显而易见的原因是 *ptr 不是以空字符结尾的字符串,但我不确定为什么不:)
-
那么我将如何摆脱这些角色?谢谢
-
@James,如果是 JSON 响应,您可以转到字符串的末尾,然后备份直到您点击 },但不能保证额外的几个未初始化字节不包含}
-
@Tim,是的,它是 JSON 响应。你能给我一个我可以使用的代码示例吗?谢谢
-
@James .. 那将是一个非常、非常丑陋的 hack ...