Cプログラムでファイルをダウンロードする方法と例


方法1: ライブラリを使用する方法 最も一般的な方法は、C言語のライブラリを使用してファイルをダウンロードすることです。以下に、libcurlを使った例を示します。

#include <stdio.h>
#include <curl/curl.h>
int main(void) {
  CURL *curl;
  FILE *fp;
  CURLcode res;
  curl = curl_easy_init();
  if (curl) {
    fp = fopen("downloaded_file.txt", "wb");
    curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/file_to_download.txt");
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, NULL);
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
    res = curl_easy_perform(curl);
    if (res != CURLE_OK)
      fprintf(stderr, "ダウンロードエラー: %s\n", curl_easy_strerror(res));
    curl_easy_cleanup(curl);
    fclose(fp);
  }
  return 0;
}

この例では、libcurlライブラリを使用してファイルをダウンロードしています。ダウンロードしたファイルは、"downloaded_file.txt"という名前で保存されます。

方法2: ネイティブな方法 C言語には、ネイティブな方法としてファイルダウンロードが可能です。以下に例を示します。

#include <stdio.h>
int main() {
  FILE *fp;
  char url[] = "http://example.com/file_to_download.txt";
  char buffer[1000];
  int n;
  fp = fopen("downloaded_file.txt", "wb");
  if (fp == NULL) {
    printf("ファイルをオープンできませんでした。\n");
    return 1;
  }
  FILE *stream = fopen(url, "r");
  if (stream) {
    while ((n = fread(buffer, sizeof(char), sizeof(buffer), stream)) > 0)
      fwrite(buffer, sizeof(char), n, fp);
    fclose(stream);
  }
  fclose(fp);
  return 0;
}

この例では、C言語の標準ライブラリを使用してファイルをダウンロードしています。ダウンロードしたファイルは、"downloaded_file.txt"という名前で保存されます。

これらの例は、C言語でファイルをダウンロードするための一般的な手法です。他にもさまざまな方法がありますが、これらの方法を参考にして、自分のニーズに合った方法を選択してください。