首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >strstr不起作用

strstr不起作用
EN

Stack Overflow用户
提问于 2011-10-30 10:56:09
回答 2查看 7.7K关注 0票数 5

如果我输入"test“,为什么这段代码在strstr()中返回false?

代码语言:javascript
复制
char input[100];

int main()
{
    fgets(input, 100, stdin);
    printf("%s", input);

    if(strstr("test message", input))
    {
        printf("strstr true");

    }


}

我以为strstr会在第一个参数中搜索第二个参数的实例?当我用一些文本替换输入或者直接给它赋值时,它可以工作,但它似乎不能与fgets一起工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-30 11:02:49

这是因为fgets存储换行符,所以当strstr进行比较时,它会失败。

从手册页:

fgets()从流中读取最多一个小于大小的字符,并将它们存储到s指向的缓冲区中。读取在EOF或换行符之后停止。如果读取了换行符,则将其存储到缓冲区中。'\0‘存储在缓冲区中的最后一个字符之后。

票数 10
EN

Stack Overflow用户

发布于 2011-10-30 11:03:06

fgets之后添加input[strlen(input) - 1] = '\0';fgets读取换行符('\n')。"test message"中没有'\n',因此input永远不会包含在其中。

在调用fgets之后,您应该真正地检查换行符是否在缓冲区的末尾,以了解整个行是否能够实际装入它,并明显地删除它。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7943032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档