【问题标题】:Getting the Specified content into the buffer in c [closed]将指定的内容放入c中的缓冲区[关闭]
【发布时间】:2011-06-09 11:42:02
【问题描述】:

我正在从 c 中的 http 服务器下载一个 jsp 文件。但是我得到了如图所示的文件内容

<HTML>
<BODY>
Hello, user
</BODY>
</HTML>

进入缓冲区。现在我只想将“Hello,user”捕获到我的缓冲区中。谁能帮我找到 C 中的代码。

【问题讨论】:

  • 发布一些代码可以帮助人们更轻松有效地回答问题。
  • 您在问题中说“文件内容如图所示”,但我什么也没看到。
  • 由于去除了 HTML 标签,它被隐藏了。解决了这个问题。
  • @Ozair 我想添加 html 标签并希望将 Hello, user 存储到缓冲区值中...

标签: c


【解决方案1】:

使用 libexpat。这是一个用 C 编写的面向流的 xml 解析器。您可以为 BODY 标签注册一个处理程序并读取内容

看看这个问题Geting xml data using xml parser expat

【讨论】:

    【解决方案2】:

    您可以尝试剥离 HTML,但如果标签之外有更多内容,这可能无法正常工作(需要更具体的过滤,例如检查周围的标签名称)。

    未经测试但应该可以工作:

    char *html = ...; // html being a pointer to the document's contents
    int ip = 0; // the input position
    int op = 0; // the ouput position
    int in_tag = 0; // are we inside a html tag?
    char c; // current character
    while(c = html[ip++])
    {
        if(c == '<')
            in_tag = 1;
        else if(c == '>')
            in_tag = 0;
        else if(c == '\n' || c == '\r') // strip line breaks
            ;
        else if(!in_tag)
            html[op++] = c;
    }
    html[op] = '\0';
    

    【讨论】:

      【解决方案3】:

      基本上你想扫描缓冲区并忽略&lt;&gt; 之间的所有内容:

      char *get_text (char *dst, char *src) {
        int html = 0;
        char ch;
      
        while (ch = *src++) {
          if (ch == '<' || ch == '>') {
            html = (ch == '<');
          } else if (!html) {
            *dst++ = ch;
          }
        }
      
        *dst = '\0';
        return dst;
      }
      

      【讨论】:

        猜你喜欢
        • 2021-09-26
        • 2015-08-20
        • 1970-01-01
        • 1970-01-01
        • 2021-06-23
        • 1970-01-01
        • 2014-03-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多