0

私は C プログラミングの本でこの例に取り組んでおり、strstr コマンドは、値が true の場合に printf コマンドをトリガーすることになっています。トラック内の文字列を見つけて、見つかったトラックを返そうとしています。これを1時間以上試しましたが、何が問題なのかわかりません。現在、一致するはずの場合でも何も印刷されていません。

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

char tracks[][80] = {
        "Boston",
        "Where the Streets Have No Name",
        "Row Row Row your Boat",
        "Gangsta Paradise",
        "Yoda",
    };


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

    }
}

int main(){

    char searchFor[80];
    printf("what is your string?: ");
    fgets(searchFor, 80, stdin);
    printf("searching for: %s", searchFor);
    findTrack(searchFor);

    return 0;
}
4

3 に答える 3

0

fgets()入力に改行文字を追加するためです。したがって、SerchFor 入力は"SearchFor\n"(入力) になります。比較するには、改行文字を削除する必要があります。

コードは次のとおりです。

int len = strlen(buffer);

if(buffer[len-1]=='\n')
   buffer[len-1]='\0'; 

の後にこのコードを追加できますfgets()

于 2020-10-17T17:21:07.647 に答える