0

strstr()用来比较 XML 响应与预期响应。在较短的测试中,这可以正常工作,但现在在较大的字符串上,我看到两个缓冲区彼此完全相等,但strstr()未能捕捉到它。

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

例子:

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

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

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

4

2 回答 2

2

如果有限制,它不可能远低于 MAXINT

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

于 2012-10-16T21:15:23.377 回答
1

如果您想检查标准 C 函数的实现,FreeBSD可能是一个有用的资源。

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

于 2012-10-16T21:18:52.643 回答