这段代码可以与fgets一起使用吗?

lin*_*ing 2 c fgets

以下代码适用scanf,但我不知道如何使它fgets(搜索总是失败),你能帮我吗(我是C的初学者)?

如果可能的话,你能告诉我为什么它似乎没有用fgets吗?

#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",
    "From here to maternity",
    "The girl from Iwo Jima",
};


int main(){
    char word[80];
    puts("Hello, type a word: ");
    fgets(word, 80, stdin);
//    scanf("%79s", word);

     for( int i= 0; i < 5; i++){
        if( strstr(tracks[i], word) ){
            printf("Found the track: %s\n", tracks[i]);
            break;
        }
     }


    return 0;
}
Run Code Online (Sandbox Code Playgroud)

das*_*ght 5

fgets(word, 80, stdin)和之间的区别scanf("%79s", word)是,fgets一个将包括'\n'在null终止符之前,而scanf不是.这就是为什么strstr返回NULLfgets:有无可匹敌的'\n'结尾.

有两种使字符串再次相等的一般方法 - 您可以'\n'word(首选)的末尾删除,或添加'\n'到您搜索的单词的末尾(不推荐).

int len = strlen(word);
if (len != 0 && word[len-1] == '\n') {
    word[len-1] = '\0';
}
Run Code Online (Sandbox Code Playgroud)