strstr не работает в цикле, как задумано - PullRequest
0 голосов
/ 13 июня 2019

Сначала я изучаю C из головы C, и я попытался создать небольшую программу, которая ищет пользовательский ввод в массиве 2d.

Но мой код не работает должным образом и всегда возвращает false.

Мой код:

#include<stdio.h>
#include<string.h>

char songs[][50] = {"Meri aashiqui ab tum hi ho",
"Aaja Maahi",
"Tum mere ho",
"Akelapan",
"kangana tera ni"};

void search_tar(char target[]) {
    printf("Searching for %s ",target);
    int i;
    for ( i = 0; i < 5; i++)
    {
        if (strstr(songs[i],target))
        {
            printf("Found the track %s from the keyword",songs[i]);
        }
    }


}

int main()
{
    char target[50];
    printf("Find the song with a keyword: ");
    fgets(target,50,stdin);
    search_tar(target);
    return 0;
}

Код из книги:

Код из книги

Я ожидаю, что код выведет результаты.

1 Ответ

0 голосов
/ 13 июня 2019

target содержит '\n' - таким образом, шаблон не соответствует шаблону strstr().

После прочтения строки отрежьте этот потенциал '\n'.

target[strcspn(target,"\n")] = 0;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...