我正在阅读Head First C书中的一些练习。还有一个jukeBox程序。
来源在这里:
#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 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 here上编译此代码。
可能有什么问题?终端根本不显示输出。
答案 0 :(得分:7)
fgets
读取换行符并将其放入缓冲区。因此,您在数组中找不到您输入的字符串。修改代码以在输入后禁止换行,如下所示:search_for[strlen(search_for)-1]='\0';
。这应该会更好。
答案 1 :(得分:0)
在调用函数之前放置此代码。
search_for[strlen(search_for)-1]='\0';
您将获得正确的输出。