Back to listC
libcurl - HTTP Request
Lv.51011@mukitaro1 playsDec 31, 2025
libcurl HTTP GET request with response buffering. Shows callback-based data handling in C.
preview.c
1#include <curl/curl.h>2#include <string.h>3 4struct response {5 char *data;6 size_t size;7};8 9static size_t write_callback(void *contents, size_t size,10 size_t nmemb, void *userp)11{12 size_t realsize = size * nmemb;13 struct response *resp = (struct response *)userp;14 15 char *ptr = realloc(resp->data, resp->size + realsize + 1);16 if (!ptr) return 0;17 18 resp->data = ptr;19 memcpy(&(resp->data[resp->size]), contents, realsize);20 resp->size += realsize;21 resp->data[resp->size] = '\0';22 23 return realsize;24}25 26int http_get(const char *url, struct response *resp)27{28 CURL *curl = curl_easy_init();29 if (!curl) return -1;30 31 resp->data = malloc(1);32 resp->size = 0;33 34 curl_easy_setopt(curl, CURLOPT_URL, url);35 curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);36 curl_easy_setopt(curl, CURLOPT_WRITEDATA, resp);37 38 CURLcode res = curl_easy_perform(curl);39 curl_easy_cleanup(curl);40 41 return (res == CURLE_OK) ? 0 : -1;42}Custom problems are not included in rankings