欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c 獲取url返回json數據格式

江奕云2年前10瀏覽0評論

在C語言中獲取URL返回JSON格式的數據,是一個常見的需求。通過使用第三方的庫,可以輕松地實現這一功能。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <curl/curl.h>
struct MemoryStruct {
char *memory;
size_t size;
};
static size_t WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp) {
size_t realsize = size * nmemb;
struct MemoryStruct *mem = (struct MemoryStruct *)userp;
char *ptr = realloc(mem->memory, mem->size + realsize + 1);
if(ptr == NULL) {
printf("Not enough memory\n");
return 0;
}
mem->memory = ptr;
memcpy(&(mem->memory[mem->size]), contents, realsize);
mem->size += realsize;
mem->memory[mem->size] = 0;
return realsize;
}
int main(void) {
CURL *curl_handle;
CURLcode res;
struct MemoryStruct chunk;
chunk.memory = malloc(1);
chunk.size = 0;
curl_handle = curl_easy_init();
curl_easy_setopt(curl_handle, CURLOPT_URL, "http://api.openweathermap.org/data/2.5/weather?q=London,uk&APPID=YOURAPIKEY");
curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)&chunk);
res = curl_easy_perform(curl_handle);
if(res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
}
else {
printf("%lu bytes retrieved\n", (unsigned long)chunk.size);
printf("%s\n", chunk.memory);
}
curl_easy_cleanup(curl_handle);
free(chunk.memory);
return 0;
}

為了在C語言中獲取URL返回JSON格式的數據,我們使用了libcurl庫。其中,我們定義了一個結構體MemoryStruct,用于保存從URL中獲取的數據。

在main函數中,我們通過使用curl_easy_init()函數,創建了一個curl的句柄。然后,我們設置了URL、回調函數、以及寫入的數據。最后,我們通過使用curl_easy_perform()函數,實現了對URL的請求,并且將獲取的數據保存在MemoryStruct結構體中。

通過這個例子,我們可以輕松地獲取URL返回JSON格式的數據,并且可以方便地在后續的程序中進行處理。