【发布时间】:2015-04-25 14:43:34
【问题描述】:
我正在尝试用 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++;
}
}
【问题讨论】:
-
strstr(strstr(html, "name") + 1, "name")找到"name"的第二次出现(前提是内部strstr没有返回NULL)