strstr函数和c中的多维数组

问题描述

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

void find_track(char *search_for);
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 *to_search_str;
    printf("Search for: ");
    fgets(to_search_str,80,stdin);
    find_track(to_search_str);
    return 0;
}

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

该程序应该在tracks多维数组中的每个字符串中搜索一个字符串,但是strstr()中的find_track函数始终返回null,无论输入如何(即使输入(如果我们从tracks多维数组输入一个字符串的子字符串)。我不知道为什么会这样?

编辑: 校正后

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

void find_track(char *search_for);
char tracks[][80] = {
    "I left my heart in Harvard Med School","The girl from Iwo Jima"
};

int main() {
    char to_search_str[80];
    printf("Search for: ");
    fgets(to_search_str,stdin);
    to_search_str[strlen(to_search_str)-1] = '\0';
    find_track(to_search_str);
    return 0;
}

void find_track(char *search_for) {
    int i;
    for (i=0; i<5; i++) {
        if (strstr(tracks[i],tracks[i]);
        }
    }
}

输出

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)