次の呼び出しを使用してファイルに書き込んだ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バイトのデータまで埋められています。これはどのように可能ですか?手がかりはありますか?