终端无输出(Head First C)

我正在阅读Head First C书中的一些练习。 还有一个jukeBox程序。
来源在这里:

#include  #include  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", }; 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; } 

我正在使用终端编译并使用gcc版本4.8.2查看程序的输出,如:

 gcc pr.c -o pr 

每当我尝试运行程序并输入搜索字符串时,我都没有输出。 程序刚刚完成执行并退出。

另外我想提一下,我试着在ideone.com上编译这段代码。
可能有什么问题? 终端根本不显示输出。

fgets读取换行符并将其放入缓冲区。 因此,您输入的字符串永远不会在数组中找到。 修改代码以在输入后抑制换行符,如下所示: search_for[strlen(search_for)-1]='\0'; 。 这应该会更好。

在调用函数之前放置此代码。

 search_for[strlen(search_for)-1]='\0'; 

您将获得正确的输出。