gpt4 book ai didi

c - strstr 一直使用 c 返回 true 在字符串中查找单词

转载 作者:行者123 更新时间:2023-12-04 11:51:25 25 4
gpt4 key购买 nike

美好的一天,

所以我决定再次使用 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;
}

现在的问题是,每当我尝试使用 strstr 搜索字符串中的单词时,它总是返回找到的单词。我也尝试过使用 strcmp 但它只会比较字符串的第一个实例并在未找到匹配项时停止,因此如果您想在字符串问题中进行单词搜索,这并不是真正可取的。

我以前没有真正制作过这样的程序,实际上从来不需要这样的程序。那么请问为什么不能正常工作,因为根据其描述 strstr 应该是在句子中搜索单词还是我误解了。

此外,如果您对我的程序有任何意见,请随时提出,以便我意识到我的错误。

谢谢

例子:词:狗
句子:狗在这里
应该返回 true

最佳答案

这一行

if(strstr(sentence,word) == 0)

应该是

if(strstr(sentence,word) != NULL)

strstr() 返回指向 sentence 中第一次出现的 word 的指针,如果是 NULL没有找到。

详情please read here .


还使用 fgets() 读取“字符串”,将 '\n' 附加到“字符串”的末尾。这禁止成功比较。

要截断尾随的 '\n',您可以这样做:

fgets(word, sizeof(word), stdin);
{
size_t size = strlen(word);

if (size && ('\n' == word[size-1]))
{
word[size-1] = '\0';
}
}

关于c - strstr 一直使用 c 返回 true 在字符串中查找单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17422217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com