Olá, Alberto!
Analisando o código que você compartilhou, parece que o programa está configurado para fazer uma requisição para a URL da CNN, mas não há nenhuma função implementada para salvar o conteúdo baixado. A função curl_easy_perform
realiza a requisição, mas o conteúdo obtido é exibido no stdout
(saída padrão), que é o terminal, por padrão.
Para salvar o conteúdo em um arquivo, você precisa definir uma função de callback para escrever os dados recebidos. Vou deixar uma sugestão de como você pode tentar modificar o seu código para salvar o conteúdo em um arquivo chamado "output.txt":
#include <stdio.h>
#include <curl/curl.h>
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(void) {
CURL *curl;
CURLcode res;
FILE *fp;
curl = curl_easy_init();
if(curl) {
fp = fopen("output.txt", "wb");
if(fp == NULL) {
perror("Não foi possível criar o arquivo");
return 1;
}
curl_easy_setopt(curl, CURLOPT_URL, "http://www.cnn.com/");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
res = curl_easy_perform(curl);
/* Check for errors */
if(res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() falhou: %s\n", curl_easy_strerror(res));
}
/* always cleanup */
curl_easy_cleanup(curl);
fclose(fp);
}
return 0;
}
Neste exemplo, a função write_data
é usada como função de callback para escrever os dados no arquivo "output.txt". Você precisa passar essa função para o curl_easy_setopt
com a opção CURLOPT_WRITEFUNCTION
, e o ponteiro para o arquivo com a opção CURLOPT_WRITEDATA
.
Compile novamente o programa com o seu makefile e execute o executável program
. Se tudo estiver correto, o conteúdo da URL especificada será salvo no arquivo "output.txt".
Espero ter ajudado e bons estudos!