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

时间:2014-08-27 17:10:19

标签: 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;
}

1 个答案:

答案 0 :(得分:5)

fgets(word, 80, stdin)scanf("%79s", word)之间的区别在于fgets在{null}终结符之前包含'\n',而scanf则不包含strstr。这就是NULL使用fgets返回'\n'的原因:最后有一个不匹配的'\n'

有两种使字符串再次相等的一般方法 - 您可以从word(首选)的末尾删除'\n',或者将int len = strlen(word); if (len != 0 && word[len-1] == '\n') { word[len-1] = '\0'; } 添加到结尾你搜索的单词(不推荐)。

{{1}}