0

次の呼び出しを使用してファイルに書き込んだhtt​​p応答があります

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 に答える