📜  通过命令行窗口下载文件 - C 编程语言(1)

📅  最后修改于: 2023-12-03 15:12:24.098000             🧑  作者: Mango

通过命令行窗口下载文件 - C 编程语言

在 C 编程语言中,我们可以使用 HTTP 协议下载文件。通过命令行窗口下载文件可以方便自动化处理,例如批量下载文件等。下面是一个简单的 C 代码片段,可以通过命令行窗口下载一个文件。

代码实现
#include <stdio.h>
#include <stdlib.h>
#include <curl/curl.h>

int main(int argc, char **argv) {
    if (argc < 3) {
        printf("Usage: %s <url> <filename>\n", argv[0]);
        return 1;
    }

    CURL *curl;
    FILE *file;
    CURLcode res;

    curl = curl_easy_init();
    if (curl) {
        file = fopen(argv[2], "wb");
        curl_easy_setopt(curl, CURLOPT_URL, argv[1]);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, file);
        res = curl_easy_perform(curl);
        if (res != CURLE_OK) {
            printf("curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
            return 1;
        }
        curl_easy_cleanup(curl);
    }

    fclose(file);
    return 0;
}
代码解释
  1. 引入头文件:
#include <stdio.h>
#include <stdlib.h>
#include <curl/curl.h>

在 C 语言中,我们需要引入标准输入输出头文件和 curl 头文件。

  1. 处理命令行参数:
if (argc < 3) {
    printf("Usage: %s <url> <filename>\n", argv[0]);
    return 1;
}

程序需要传入一个 URL 和一个文件名两个参数,如果没有传入则输出命令行使用方式并结束程序。

  1. 初始化 CURL:
CURL *curl;
FILE *file;
CURLcode res;

curl = curl_easy_init();

使用 curl_easy_init() 函数初始化 CURL 句柄。

  1. 打开本地文件:
file = fopen(argv[2], "wb");

使用 fopen() 函数打开文件,argv[2] 是我们传入的文件名。

  1. 设置 CURL 参数:
curl_easy_setopt(curl, CURLOPT_URL, argv[1]);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, file);

使用 curl_easy_setopt() 函数设置 CURL 参数,CURLOPT_URL 指定要下载的 URL,CURLOPT_WRITEDATA 指定写入的文件。

  1. 执行 CURL 请求:
res = curl_easy_perform(curl);
if (res != CURLE_OK) {
    printf("curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
    return 1;
}

使用 curl_easy_perform() 函数执行 CURL 请求。如果返回值不是 CURLE_OK,说明请求失败并输出错误信息。

  1. 清理资源:
curl_easy_cleanup(curl);
fclose(file);

使用 curl_easy_cleanup() 函数清理 CURL 资源,使用 fclose() 函数关闭文件。

总结

通过上面的代码,我们可以通过命令行窗口下载一个文件。这个代码只是一个简单的例子,可以根据自己的需要进行修改和定制化。