2014-10-09 57 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