Function "strstr ()" is not locating what I expect

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

char tracks[][80] = {
    "I left my heart in Harvard Med School",
    "Newark, Newark - a wonderful town",
    "Dancing with a Dork",
    "The girl from Iwo Jima",
};

void find_track(char search_for[])
{
    int i;
    for(i = 0; i < 5; i++){
        if(strstr(tracks[i], search_for)){
            printf("Track %i: '%s'\n", i, tracks[i]);
        }
    }
}

int main()
{
    char search_for[80];
    printf("Search for: ");
    fgets(search_for, 80, stdin);
    find_track(search_for);
    return 0;
}
    
asked by anonymous 04.01.2016 / 21:41

1 answer

2

By the way you are reading the text (which is not the most advisable) it is putting the end-of-line character inside the string , there it will look for the text with the end of line and will not find You need to close the string when you find this character, so the search will be done only in the text. For this you need to add this code before using string :

search_for[strcspn(search_for, "\n")] = 0;

See working on ideone .

    
04.01.2016 / 21:56