以下代码适用于scanf
,但我不知道如何使其与fgets
一起使用(搜索始终失败),请帮助我(我是初学者) C)?
如果可能的话,你能否告诉我为什么它似乎与fgets
无关?
#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",
};
int main(){
char word[80];
puts("Hello, type a word: ");
fgets(word, 80, stdin);
// scanf("%79s", word);
for( int i= 0; i < 5; i++){
if( strstr(tracks[i], word) ){
printf("Found the track: %s\n", tracks[i]);
break;
}
}
return 0;
}
答案 0 :(得分:5)
fgets(word, 80, stdin)
和scanf("%79s", word)
之间的区别在于fgets
在{null}终结符之前包含'\n'
,而scanf
则不包含strstr
。这就是NULL
使用fgets
返回'\n'
的原因:最后有一个不匹配的'\n'
。
有两种使字符串再次相等的一般方法 - 您可以从word
(首选)的末尾删除'\n'
,或者将int len = strlen(word);
if (len != 0 && word[len-1] == '\n') {
word[len-1] = '\0';
}
添加到结尾你搜索的单词(不推荐)。
{{1}}