如果我输入“test”,为什么这段特定的代码在 strstr() 上返回 false?
char input[100];
int main()
{
fgets(input, 100, stdin);
printf("%s", input);
if(strstr("test message", input))
{
printf("strstr true");
}
}
我认为 strstr 在第一个参数中搜索第二个参数的实例?当我用一些文本替换输入或直接为其分配一些内容时它可以工作,但它似乎不适用于 fgets。
这是因为 fgets 存储换行符,因此当 strstr 进行比较时会失败。
从手册页:
fgets() 从流中最多读取一个小于 size 的字符
并将它们存储到 s 指向的缓冲区中。之后停止读取
EOF 或换行符。如果读取换行符,则将其存储
进入缓冲区。 '\0' 存储在缓冲区中最后一个字符之后。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)