簡體   English   中英

此代碼可以與fgets一起使用嗎?

[英]Can this code work with 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;
}

fgets(word, 80, stdin)scanf("%79s", word)之間的區別在於, fgets在空終止符之前將包含'\\n' ,而scanf不會。 這就是為什么strstr使用fgets返回NULL原因:結尾處沒有匹配的'\\n'

有兩種使字符串再次相等的通用方法-您可以從word的末尾刪除'\\n' (首選),也可以在搜索到的單詞的末尾添加'\\n' (不建議) 。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM