c - Libcurl 如何不显示所有这些信息

标签 c curl block codeblocks libcurl

如何不显示所有这些信息? 我所做的只是使用很少编辑的 FTP 示例,并且我不希望显示该信息。

编辑:添加了 main.c 中的完整代码

图片链接:http://www.mediafire.com/convkey/71e9/oyhctzcdjxakzxzfg.jpg

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

struct FtpFile {
 const char *filename;
 FILE *stream;
};
static size_t my_fwrite(void *buffer, size_t size, size_t nmemb, void *stream)
{
  struct FtpFile *out=(struct FtpFile *)stream;
  if(out && !out->stream) {
  /* open file for writing */
  out->stream=fopen(out->filename, "wb");
  if(!out->stream)
  return -1; /* failure, can't open file to write */
}
return fwrite(buffer, size, nmemb, out->stream);
}

int main()
{
CURL *curl;
CURLcode res;
struct FtpFile version={"version.txt", /* name to store the file as if succesful */NULL};

curl_global_init(CURL_GLOBAL_DEFAULT);
curl = curl_easy_init();

FILE *file_verzija;
int trenutna_verzija;
int nova_verzija;
char pitanje_za_update;

file_verzija=fopen("version.txt","r");

fscanf(file_verzija,"%i",&trenutna_verzija);

fclose(file_verzija);


printf("Current version %i",trenutna_verzija);

printf("\nChecking for updates...\n");


if(curl)
{
    /*You better replace the URL with one that works!*/curl_easy_setopt(curl, CURLOPT_URL,"http://elektro-srb.com/site/muffin_finder_files/version.txt");
    /* Define our callback to get called when there's data to be written */
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_fwrite);
    /* Set a pointer to our struct to pass to the callback */
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &version);
    /* Switch on full protocol/debug output */
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
    res = curl_easy_perform(curl);
    /* always cleanup */
    curl_easy_cleanup(curl);
    if(CURLE_OK != res)
    {
        /* we failed */
        printf("\nerror");
    }
}

if(version.stream)
    fclose(version.stream); /* close the local file */

file_verzija=fopen("version.txt","r");

fscanf(file_verzija,"%i",&nova_verzija);

fclose(file_verzija);

if(trenutna_verzija != nova_verzija)
{
    printf("\nUpdate found! New version is %i",nova_verzija);
}
else
{
    printf("You are running latest version of Muffin Finder!");
}

if(trenutna_verzija != nova_verzija)
{
    printf("\nUpdate? y/n");
    scanf("\n%c",&pitanje_za_update);
    if((pitanje_za_update == 'y') || (pitanje_za_update == 'Y'))
    {
        //UPDATE
    }
    else if((pitanje_za_update == 'n') || (pitanje_za_update == 'N'))
    {
        //pokretanje stare
    }
}


curl_global_cleanup();



return 0;
}

最佳答案

您应该构造一个 WRITEFUNCTION 选项,以防止它使用 stdout 进行打印。

请参见此处:http://curl.haxx.se/libcurl/c/curl_easy_setopt.html .

搜索“WRITEFUNCTION”。您应该实现该函数(我假设您希望将其留空)。

编辑:按照手册所述,您应该执行以下操作:

实现一个函数来替换默认的stdout:

size_t outputFunction(char *ptr, size_t size, size_t nmemb, void *userdata) {}

初始化 CURL 结构时,使用此选项:

curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, outputFunction);

关于c - Libcurl 如何不显示所有这些信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20447660/

相关文章:

c - 调用 strcpy 的结果与预期不同

转换为函数

c - Windows上C语言的定时器

c - 动态链接和全局变量

curl - rust-slack 运行时错误 : index out of bounds: the len is 0 but the index is 0

magento静态 block 中的javascript幻灯片

html - 该框不起作用(html/css)

curl - Youtube API 授权无效且缺少必需参数 : grant_type

ruby - 如果它支持 Cloudflare 的反 DDos 保护,我如何使用 ruby​​ 获取 API

ruby-on-rails - 如何将救援 block 移动到方法