Я выполняю упражнение в 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);
}
'(strncmp (position-> fruits," \ "Арбуз \" ", 10)'. То есть, избегайте символов двойной кавычки. Escaping является стандартным способом указания специальных символов в строковом литерале. – kaylum
Возможный дубликат из [Включить двойную кавычку (") в C-строку] (http://stackoverflow.com/questions/20458489/include-double-quote-in-c-string) – kaylum
В качестве альтернативы, разделите кавычки от данных до сохраняя его в связанном списке. Это хорошая идея, если кавычки наиболее правильно считаются частью форматирования данных, а не являются неотъемлемой частью данных. –