使用 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 并使用 wget
或 curl
。
char command[1024];
snprintf(command, 1024, "wget -c '%s'", url);
system(command); // add error handling
这将大大减少工作量。
您可以使用创建 fork()
并执行 wget
、curl
和 execl
、execl
、execlp
等命令在您可以使用 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
我正在构建一个简单的 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 并使用 wget
或 curl
。
char command[1024];
snprintf(command, 1024, "wget -c '%s'", url);
system(command); // add error handling
这将大大减少工作量。
您可以使用创建 fork()
并执行 wget
、curl
和 execl
、execl
、execlp
等命令在您可以使用 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