0

我正在为我的 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); 
    }
4

1 回答 1

0

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

于 2016-11-03T20:21:18.863 回答