c从字符串中找到确切的单词,以“

时间:2016-11-03 19:49:27

标签: c linked-list strncmp

我正在C语言练习C语言课程。我必须将文本文件中的数据读入链表并查找匹配项,然后将结果打印出来。

文本文件示例:

"Apple/Orange",1
"Banana/Watermelon/Lemon",2
"Watermelon/Strawberry",3
"Orange/Grape/Watermelon",4
"Blueberry", 5

使用fgets(),sscanf()和void函数将它们存储到我的链表中,因此该字符串将以引号开头。

问题是,当我尝试使用strncmp()从字符串中查找单词时,由于引号,它无效。

我做了类似的事情:

void findFruits(List *list){

Node *position = list->first;
while(position != NULL){
    if(strncmp(position->fruits, "Watermelon", 10)==0){
        printf("%s, %d\n", position->fruits, position->number); 
    }
    position = position->next;
}

我完全不知道从字母表中找到一个以引号开头的确切单词,任何帮助都会受到赞赏,谢谢。

现在解决了,感谢Barmar的想法。当我尝试使用strstr()而不是strncmp()时,它工作得很好。

if(strstr(position->fruits, "Watermelon")){
    printf("%s, %d\n", position->fruits, position->number); 
    }

1 个答案:

答案 0 :(得分:0)

如果您想搜索单个水果字,例如字符串Watermelon中的Banana/Watermelon/Lemon,则无法比较这两个字符串,但您必须使用此分隔符{{1并比较两个分隔符之间的单词;或者您可以将水果的单个字符与字符串进行比较。