#include <stdio.h>
#include <curl/curl.h>
// Función de escritura para manejar los datos descargados
size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream) {
size_t written = fwrite(ptr, size, nmemb, stream);
return written;
}
int main() {
CURL *curl;
CURLcode res;
FILE *fp;
const char *url = "http://example.com/file.txt"; // URL del archivo a descargar
const char *outfilename = "downloaded_file.txt"; // Nombre del archivo de salida
curl = curl_easy_init();
if (curl) {
fp = fopen(outfilename, "wb"); // Abrir el archivo en modo binario
if (fp == NULL) {
perror("Error al abrir el archivo");
return 1;
}
curl_easy_setopt(curl, CURLOPT_URL, url); // Establecer la URL
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); // Establecer la función de escritura
curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); // Establecer el archivo de salida
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); // Seguir redirecciones
// Realizar la solicitud GET
res = curl_easy_perform(curl);
if (res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() falló: %s\n", curl_easy_strerror(res));
}
fclose(fp); // Cerrar el archivo
curl_easy_cleanup(curl); // Limpiar la sesión de curl
}
return 0;
}