我有以下代码。问题是当我运行它时,它没有向我显示我搜索过的搜索内容;在中为尝试printf("%s", strstr(tracks[i], search_for))
,返回null,但是对于 tracks [i] 和 search_for 执行相同操作没有问题。请帮忙!
#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;
}
答案 0 :(得分:4)
正如我们在fgets()
文档中所看到的,如果行末尾有换行符,它将包含在生成的字符串中:
最多读取计数 - 给定文件流中的1个字符并将它们存储在str中。生成的字符串始终以NULL结尾。如果文件结束或找到换行符,则解析停止,在这种情况下str将包含该换行符。
所以在这种情况下,如果我们输入"Newark"
,那么我们有:
search_for[] = {'N', 'e', 'w', 'a', 'r', 'k', '\n', '\0', ...};
您需要删除该额外换行符。