mag*_*iam 2 c c-strings turbo-c
再会,
所以我决定再次通过我的 C 并开始对字符串中的单词进行简单的搜索。
这是我的代码:
#include<stdio.h>
#include<conio.h>
#include<string.h>
main(){
char word[100];
char sentence[100];
clrscr();
printf("Enter a word: ");
fgets(word, 100, stdin);
getch();
printf("The word is : %s", &word);
getch();
printf("\nEnter a sentence: ");
fgets(sentence, 100, stdin);
getch();
printf("The sentence is: %s",&sentence);
getch();
if(strstr(sentence,word) == 0){
printf("word found!");
}
getch();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
现在的问题是,每当我尝试使用 搜索字符串中的单词时strstr,它总是返回word found。我也尝试过使用,strcmp但这只会比较字符串的第一个实例,并在找不到匹配项时停止,因此如果您想在字符串问题中进行单词搜索,这并不是真正可取的。
我以前从未真正制作过这样的程序,实际上从未需要过。所以我可以问为什么不能正常工作,因为根据它的描述strstr应该是在一个句子中搜索一个词还是我只是误解了它。
另外,如果您对我的程序有任何意见,请随时提出,以便我意识到我的错误。
谢谢
示例:单词:狗
句子:狗在这里
应该返回真
这条线
if(strstr(sentence,word) == 0)
Run Code Online (Sandbox Code Playgroud)
应该
if(strstr(sentence,word) != NULL)
Run Code Online (Sandbox Code Playgroud)
strstr()返回一个指向wordin第一次出现的指针,sentence或者NULL如果没有找到该词。
详情请阅读此处。
也fgets()用于读入“字符串”,在“字符串”'\n'的末尾附加一个。这阻止了成功的比较。
要截断尾随,'\n'您可以这样做:
fgets(word, sizeof(word), stdin);
{
size_t size = strlen(word);
if (size && ('\n' == word[size-1]))
{
word[size-1] = '\0';
}
}
Run Code Online (Sandbox Code Playgroud)