0

strstr()XML応答と期待される応答を比較するために使用しています。短いテストではこれは適切に機能しましたが、大きな文字列では2つのバッファーが完全に等しいことがわかりましたが、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

FreeBSDは、標準のC関数の実装をチェックしたい場合に役立つソースです。

それらのバージョンのstrstrは、他の標準ライブラリの実装と非常によく似ており、処理している比較的小さな文字列に影響を与える制限がないことを確認します。

于 2012-10-16T21:18:52.643 に答える