我正在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);
}
答案 0 :(得分:0)
如果您想搜索单个水果字,例如字符串Watermelon
中的Banana/Watermelon/Lemon
,则无法比较这两个字符串,但您必须使用此分隔符{{1并比较两个分隔符之间的单词;或者您可以将水果的单个字符与字符串进行比较。