0

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

4

1 回答 1

1

我在这里做错了什么吗?

是的,您根本没有跟踪返回值。I/O 调用可能会失败,您必须在根据结果检查返回值之前。

于 2012-09-21T10:44:54.133 回答