BIG
[ C ] Sample Code - curl - 네이버 블러그 RSS 읽어오기
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <curl/curl.h>
int main() {
CURL *curl;
CURLcode res;
curl_global_init(CURL_GLOBAL_DEFAULT);
curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, "https://rss.blog.naver.com/qnfmfmd_.xml");
res = curl_easy_perform(curl);
if (res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
}
curl_easy_cleanup(curl);
}
curl_global_cleanup();
return 0;
}
/*************************************************8
libcurl 라이브러리 다운로드
libcurl 공식 사이트(https://curl.se/download.html)에서
원하는 운영체제와 버전을 선택하여 다운로드합니다.
여기서는 Windows 용으로 다운로드합니다.
프로젝트에 libcurl 추가
Visual Studio에서 프로젝트를 생성하거나 엽니다.
프로젝트 우클릭 -> 속성 -> 구성 속성 -> C/C++ -> 일반 -> 추가 포함 디렉터리 항목에
다운로드한 libcurl 라이브러리의 include 폴더 경로를 추가합니다.
libcurl 라이브러리 링크 설정
위에서 추가한 include 폴더에 있는 .lib 파일과 .dll 파일을 프로젝트에 링크합니다.
구성 속성 -> 링커 -> 일반 -> 추가 라이브러리 디렉터리 항목에
libcurl 라이브러리의 lib 폴더 경로를 추가합니다.
그리고 구성 속성 -> 링커 -> 입력 -> 추가 종속성 항목에 libcurl.dll.a 파일명을 추가합니다.
*/
* arm64 m1 macbook CLion 환경에서 실행
* CMakeLists.txt
cmake_minimum_required(VERSION 3.24)
project(untitled C)
set(CMAKE_C_STANDARD 11)
add_executable(untitled main.c)
target_link_libraries(untitled curl) // <- 추가
* main.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <curl/curl.h>
#define BUFSIZE 1024
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;
mem->memory = realloc(mem->memory, mem->size + realsize + 1);
if (mem->memory == NULL) {
printf("Not enough memory (realloc returned NULL)\n");
return 0;
}
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_global_init(CURL_GLOBAL_ALL);
curl_handle = curl_easy_init();
curl_easy_setopt(curl_handle, CURLOPT_URL, "https://rss.blog.naver.com/qnfmfmd_.xml");
curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)&chunk);
res = curl_easy_perform(curl_handle);
curl_easy_cleanup(curl_handle);
if(res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
return 1;
}
printf("%s\n", chunk.memory);
free(chunk.memory);
curl_global_cleanup();
return 0;
}
LIST
'!!...C' 카테고리의 다른 글
[ C ] Sample Code - printf (0) | 2023.02.21 |
---|---|
[ C ] Sample Code - C 언어에서 지원하는 자료형별 변수 (0) | 2023.02.21 |
[ C ] Sample Code - recursive call (0) | 2023.02.20 |
[ C ] Sample Code - quick sort (0) | 2023.02.20 |
[ C ] Sample Code - bubble sort (0) | 2023.02.20 |