2016-11-03 5 views
0

Я выполняю упражнение в C для своего курса программирования C. Мне нужно прочитать данные из текстового файла в связанный список и искать совпадения, а затем распечатать результат.c найти точное слово из строки, начинающейся с «

Пример текстового файла:

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

Хранится их в мой связанный список с помощью fgets(), sscanf() и функцию недействительным, поэтому строка будет начинаться с кавычками

.

Проблема в том, что я попытался использовать strncmp(), чтобы найти слово из строки, это не wo rk из-за кавычки.

я сделал что-то вроде:

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; 
} 

Я буквально понятия не имею, для поиска точного слова из строки, которая, начиная с кавычками, любая помощь будет признателен, спасибо.

Решено теперь, благодаря идее Бармара. Он отлично работал, когда я пытался использовать strstr() вместо strncmp().

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

'(strncmp (position-> fruits," \ "Арбуз \" ", 10)'. То есть, избегайте символов двойной кавычки. Escaping является стандартным способом указания специальных символов в строковом литерале. – kaylum

+0

Возможный дубликат из [Включить двойную кавычку (") в C-строку] (http://stackoverflow.com/questions/20458489/include-double-quote-in-c-string) – kaylum

+0

В качестве альтернативы, разделите кавычки от данных до сохраняя его в связанном списке. Это хорошая идея, если кавычки наиболее правильно считаются частью форматирования данных, а не являются неотъемлемой частью данных. –

ответ

0

если вы хотите выполнить поиск по одному слову фруктов, например Watermelon в строке Banana/Watermelon/Lemon, вы не можете сравнить эти две строки, но вы должны разделить вашу строку с сепаратором / и сравните слово между двумя сепараторе; или вы можете сравнить один символ вашего плода со своей строкой.

+0

Спасибо за ваш ответ, моя проблема была решена с помощью strstr(). –