我有一个http响应,我使用以下调用
在文件中写入curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, responseCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, responseFile);
static size_t responseCallback(void *ptr, size_t size, size_t nmemb, void *userdata)
{
int written = fwrite(ptr, size, nmemb, (FILE *)userdata);
return written;
}
现在我正在尝试使用
从文件中读回该数据void getAccessToken()
{
long len;
char *buf;
fseek(responseFile,0,SEEK_SET); //go to beg.
fseek(responseFile,0,SEEK_END); //go to end
len=ftell(responseFile); //get position at end (length)
fseek(responseFile,0,SEEK_SET); //go to beg.
buf=new char[len];
fread(buf,len,1,responseFile); //read into buffer
//some operation to be performed on buf
delete [] buf;
}
我想要执行的操作是检索我在http响应中收到的特定标记(可以使用strtok完成)。我已经能够获取数据,但最后一些垃圾字符也出现了。 此外,文件的大小是1743字节(相同大小的数据由curl回调函数写入)但buf正在填充,直到3510字节的数据。这怎么可能?有线索吗?
答案 0 :(得分:1)
我在这里做错了什么?
是的,您根本没有跟踪返回值。 I / O调用可能会失败,您必须根据结果检查返回值。