如何在C中查找所有出现的子串

路卡

我试图用C编写一个解析程序,该程序将从HTML文档中提取文本的某些片段。为此,我需要在文档中找到子字符串“ name”的每个实例:但是,C函数strstr仅找到子字符串的第一个实例。我找不到一个可以找到第一个实例之外的任何东西的函数,并且我已经考虑过在找到每个子串后删除它,以便strstr返回下一个子串。我无法使用这两种方法中的任何一种。

顺便说一句,我知道while循环将其限制为六个迭代,但是我只是在测试它以查看是否可以首先使函数正常工作。

while(entry_count < 6)
{   
    printf("test");
    if((ptr = strstr(buffer, "\"name\":")) != NULL)
    {   
        ptr += 8;
        int i = 0;
        while(*ptr != '\"')
        {   
            company_name[i] = *ptr;
            ptr++;
            i++;
        }   
        company_name[i] = '\n';
        int j;
        for(j = 0; company_name[j] != '\n'; j++)
            printf("%c", company_name[j]);
        printf("\n");
        strtok(buffer, "\"name\":");
        entry_count++;
    }   
}   
伊尔马里·卡洛宁(Ilmari Karonen)

只需将返回的指针加一个返回,strstr()以找到下一个匹配项:

char *ptr = strstr(buffer, target);
while (ptr) {
    /* ... do something with ptr ... */
    ptr = strstr(ptr+1, target);
}

附言 尽管您当然可以做到这一点,但我还是建议您不妨考虑使用更合适的工具来完成这项工作:

  • C是一种非常低级的语言,尝试用它编写字符串解析代码很费力(尤其是如果您坚持从头开始编写所有代码,而不是使用现有的解析库或解析器生成器)并且容易出现错误(其中一些错误,例如缓冲区溢出,可能会造成安全漏洞)。有很多被更高级别的脚本语言(如Perl和Ruby,Python或甚至和JavaScript)的多少更适合这样的任务。

  • 解析HTML时,您确实应该使用适当的HTML解析器(最好与良好的DOM构建器和查询工具结合使用)。这将使您能够基于文档结构定位所需的数据,而不仅仅是匹配原始HTML源代码中的子字符串。真正的HTML解析器还将透明地处理诸如字符集转换和字符实体解码之类的问题。(是的,有HTML解析器C,如浓汤喧哗,所以即使你坚持坚持C.你可以和应该使用一个)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Java中查找并替换出现在字符串中的所有子字符串?

如何在以{{开头并以}结尾的字符串中查找所有子字符串

如何在列表中查找子列表的所有出现次数(索引)

如何在Python中查找所有不连续的子字符串?

查找Java中字符串中所有出现的子字符串

如何找到所有出现的子串?

Swift查找所有出现的子字符串

如何在可能包含更多列表或字典列表的嵌套字典中查找子字符串的所有实例

在C ++ 11中,如何在以给定字符串开头的字符串向量中查找并返回所有项?

在python中查找大字符串中所有出现的子字符串的最快方法是什么

查找字符串中所有出现的地方作为给定字符串中的子序列

替换C中字符串中所有出现的子字符串

在 C++ 中搜索所有出现的子字符串的字符串

如何在Java中查找特定接口的所有(子)子接口?

如何查找emacs中所有出现的字符串?

查找包含 HTML 的字符串中的所有出现

如何在主字符串中查找子字符串,以及如何搜索主字符串中是否存在子字符串的所有元素

查找子字符串的所有出现,然后删除所有先前出现的几个先前字符,直到python中的先前空格

如何查找数据框中包含子字符串的所有行?

如何在带有子字符串的字符串中获得多次出现?

如何在Visual Studio Code中查找并替换所有出现的内容(在所有文件中)?

如何在UNIX中的所有子文件夹中查找特定文件

如何从数据框中的列末尾删除所有出现的子字符串?

如何在字段中查找所有具有特定字符串的文档?(Elasticsearch)

查找给定字符串中所有子字符串的出现

查找字符串中所有出现的子字符串

如何在Python中获取字符串的所有连续子字符串?

C#查找带有模式的大字符串中的所有子字符串

如何在BeautifulSoup中查找所有班级以字符串开头的div?