1

我想在字符串中找到子字符串(来自数组),但我想找到真正的单词。

例如:

const char *subString[] = { "adam", "car", "red"};
char* String[] = "madam, I am adam";..

现在,我怎样才能找到名字亚当?但我没有找到亚当,但我只想找到亚当......

例如:女士,我是亚当

如何修改 strstr ?

你能帮助我吗?谢谢..我的最后一个问题:这里

4

2 回答 2

2

当您执行以下声明时

const char subString[] = { ... }

你声明这subString是一个字符数组。然后,您尝试将其初始化为字符串数组,但这是行不通的。如果你希望它是一个字符串数组,你必须将它声明为一个指向字符的指针数组:

const char *subString[] = { ... }

至于您的问题,一种解决方案是“标记”字符串(String在您的情况下),即将其拆分为空格,然后遍历subString数组以尝试在标记化字符串中找到字符串。

像这样的伪代码:

for each space-delimited string in String
{
    strip_tokenized_string_of_punctuation();

    for each string in subStrings
    {
        if tokenized_string contains substring
        {
            printf("String contains the word %s\n", substring);
        }
    }
}

为了帮助您,您可能需要查看函数strtokstrstr.

于 2013-11-10T12:37:29.617 回答
0

应该有 strtok() 函数,它获取字符串中的所有单词(您必须提供分隔符作为参数,在您的情况下它是空格)然后您可以迭代所有获得的单词并查看它们是否在你的第一个数组。那么你不会有“女士”的问题,就像你的例子一样。

于 2013-11-10T12:44:57.780 回答