strstr()在C中是否有大小限制?

时间:2012-10-16 21:08:27

标签: c

我使用strstr()来比较XML响应和预期响应。在较短的测试中,这已经正常工作,但现在在更大的字符串上,我看到两个缓冲区彼此完全相同,但strstr()无法捕获它。

我失败的XML字符串响应大小为502字节,所以我期望strstr()在502字节字符串中找到502字节字符串的出现。

示例:

if( strstr(msgPointer, xmlcheckstring) )
{
    printf("Good response!\n");
}
else
{
    printf("Bad response :(\n");
}

msgPointer指向我的接收缓冲区,xmlcheckstring包含要检查的常量字符串。而且,这适用于较小的测试(大小约为200字节)。

如果有人对此有任何经验,我只是好奇。谢谢,

2 个答案:

答案 0 :(得分:2)

如果有限制,则不太可能低于MAXINT

我猜你正在搜索从TCP流套接字读取的数据中的字符串?如果是这样,请注意read()可以返回的字节数少于您请求的字节数,您可能需要多次调用read()来获取您正在查找的整个XML消息...

答案 1 :(得分:1)

如果要检查标准C函数的实现,

FreeBSD可能是一个有用的源。

他们的strstr版本与其他标准库实现非常相似,并且确认没有任何限制会影响您正在处理的相对较小的字符串。