我有一个 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 字节数据。这怎么可能?有什么线索吗?