使用 C 标准库从 url 文件 read/write 的最佳方法

Best way to read/write a file from a url using C std libs

我正在构建一个简单的 C 程序,它使用 scanf() 获取用户输入参数 (URL),如下面的代码所示。我现在正在寻找将远程文件 read/write 到本地文件的最佳 "standard" 方法...然后我将对新的本地源文件执行 grep(搜索)操作。

//代码

#include <stdio.h>

int main(void){
   char url[255];

   //USER INPUT URL
   printf("ENTER URL: ");
   scanf("%s", &url);

   //GET FILE AT URL(REMOTE) AND COPY TO (LOCAL) 




   //RETURN
   return 0;
}

老实说,您可以使用 libcurl,或者 shell 并使用 wgetcurl

char command[1024];
snprintf(command, 1024, "wget -c '%s'", url);
system(command); // add error handling

这将大大减少工作量。

您可以使用创建 fork() 并执行 wgetcurlexeclexeclexeclp 等命令在您可以使用 fgets 读取该文件并使用 fputs.

添加行之后

我认为您正在寻找某种 html 解析器,有可能包含 curl 库:

#include <curl/curl.h>
#include <stdio.h>
#include <stdlib.h>

#define FILE_SIZE 10000

int main(void)
{
curl_global_init(CURL_GLOBAL_ALL);

CURL * myHandle;
CURLcode setop_result;
FILE *file;

if((file = fopen("webpage.html", "wb")) == NULL)
{
    perror("Error");
    exit(EXIT_FAILURE);
}

if((myHandle = curl_easy_init()) == NULL)
{
    perror("Error");
    exit(EXIT_FAILURE);
}

if((setop_result = curl_easy_setopt(myHandle, CURLOPT_URL, "http://cboard.cprogramming.com/")) != CURLE_OK)
{
    perror("Error");
    exit(EXIT_FAILURE);
}

    if((setop_result = curl_easy_setopt(myHandle, CURLOPT_WRITEDATA, file))     != CURLE_OK)
{
    perror("Error");
    exit(EXIT_FAILURE);
}

if((setop_result = curl_easy_perform(myHandle)) != 0)
{
    perror("Error");
    exit(EXIT_FAILURE);
}
curl_easy_cleanup(myHandle);
fclose(file);
puts("Webpage downloaded successfully to webpage.html");

return 0;
}

它是下面论坛中的 post #10

发现于 enter link description here