首页 > 解决方案 > 使用 strstr 搜索字符串数组的代码有什么问题?

问题描述

我讨厌问“这里有什么问题?” 问题,但我正在阅读 Head First C 书,在尝试编译我直接从书中获取的示例时遇到了一个问题。代码的目的只是从用户那里获取输入并在“Track List”(轨道数组中的字符串)中搜索用户精确输入的任何副本。由于代码直接取自本书,因此它应该可以完美编译和运行,没有任何问题。但是,它无法识别输入何时是任何字符串的一部分。我自己确定问题根源的所有徒劳无功的尝试似乎都指向了使用 strstr 函数的 if 状态 - 但它并不过分复杂,而且我没有看到问题所在。这是代码:

    #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 for Iwo Jima",
    };

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

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

标签: cstrstr

解决方案


推荐阅读