我想在字符串中找到子字符串(来自数组),但我想找到真正的单词。
例如:
const char *subString[] = { "adam", "car", "red"};
char* String[] = "madam, I am adam";..
现在,我怎样才能找到名字亚当?但我没有找到亚当,但我只想找到亚当......
例如:女士,我是亚当
如何修改 strstr ?
你能帮助我吗?谢谢..我的最后一个问题:这里
当您执行以下声明时
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);
}
}
}
应该有 strtok() 函数,它获取字符串中的所有单词(您必须提供分隔符作为参数,在您的情况下它是空格)然后您可以迭代所有获得的单词并查看它们是否在你的第一个数组。那么你不会有“女士”的问题,就像你的例子一样。