2014-10-09 58 views
1

我有下面的代码。问题在于,当我运行它时,它没有为我搜索到的搜索显示任何内容;尝试printf("%s", strstr(tracks[i], search_for))里面,带回空,但没有问题做跟踪[i]search_for。请帮忙!。strstr()不工作C

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

char tracks[][80]={ 
    "I left my heart in Harvard Med Scholl", 
    "Newark, Newark - a wonderful town", 
    "Dancing with a Dork", 
    "From here to maternity", 
    "The girl from 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; 
} 

回答

4

正如我们可以在fgets()文档中看到的,如果在该线的端部的换行,它将被包括在产生的字符串:

读取至多计数 - 1个字符从给定的文件流中并将它们存储在str中。生成的字符串始终以NULL结尾。如果发生文件结尾或发现换行符,则停止解析,在这种情况下,str将包含该换行符。

因此,在这种情况下,如果我们输入"Newark",那么我们有:

search_for[] = {'N', 'e', 'w', 'a', 'r', 'k', '\n', '\0', ...}; 

您将要删除多余的换行符。

+0

谢谢!解决了包括'strtok(search_for,“\ n”);' – edusandovall 2014-10-09 20:13:36