每次 strstr() 函数返回 false。当我传递任何输入时,函数总是返回 false

every time strstr() function is returning false. when i pass any input always function is returning false

我正在尝试搜索 tracks 数组中是否有可用的曲目。当我给出任何输入时,strstr() 函数总是返回 false。如果我使用 else 块,则每次 else 块都在执行。

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

    // function to search the track with entered search string //
    void find_track(char search_for[]) {
        int i;
        for (i = 0; i < 5; i++) {
            /** this if condition is returning false every time */
            if (strstr(tracks[i], search_for)){
            printf("Track %i: '%s'\n", i, tracks[i]);
            }/**else{
                printf("some thing went wrong @ %i\n", i);
            }**/
        }
    }



    int main() {
        char search_for[80];
        printf("Search for: ");
        fgets(search_for, 80, stdin);
        find_track(search_for);
        return 0;
    }

输入:

gcc test.c -o test && test

搜索:with

预期结果:Track 2:'Dancing with a Dork'

请帮助我。

fgets 也读取换行符。在将其传递给 find_track.

之前,您需要将其从 search_for 中删除

参见Removing the newline from fgets