C语言 在MVSC中为cURL创建字符串流



我在C中使用cURL,并希望将页头和正文写入内存,而不是文件:

static size_t writeData(void *ptr, size_t size, size_t nmemb, void *stream)
{
  int written = fwrite(ptr, size, nmemb, (FILE *)stream);
  return written;
}

这个线程详细说明了在c++中如何做,这个线程详细说明了在GCC中如何做。

从我能找到的(这里和这里),在MVSC中没有办法做到这一点-或者不容易。

肯定有办法做到这一点,如果不是通过替换文件流然后用cURL库的一些函数?也许有一些方法可以绕过指针来传递一个流?我难住了!

您链接的第一个问题确切地说明了如何做到这一点。你不需要任何花哨的东西。如果您正在使用c++,那么您可以使用stringstream。如果没有,您可以直接使用普通的old memcpy添加到缓冲区。

struct buffer {
   void *mem;
   size_t size;
};
....
struct buffer b = {0};
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &b);

static size_t writeData(void *ptr, size_t size, size_t nmemb, void *data)
{
    void *mem;
    struct buffer *b = data;
    /* Save old size and try to realloc buffer. */
    size_t oldsize = b->size;
    b->size += size * nmemb;
    if (!(mem = realloc(b->mem, b->size))) {
        /* realloc failed, handle error. */
    }
    /* If realloc worked, just append. */
    b->mem = mem;
    mempy(b->mem + oldsize, ptr, nmemb * size);
}

这段代码没有经过测试,但是解决问题应该是相当容易的。

相关内容

  • 没有找到相关文章

最新更新