1

memcpy または memcmp を使用するときに範囲を使用することは可能ですか?

char data[900000]; // size 900000
char array[20]; // size 20

if (memcmp(data[50-70], array, 20) == 0) {
    // do thing
}

(20) キー data[50-70] と array[] を比較できるようにしたい

4

1 に答える 1

1

memcmp/memcpy比較またはコピーするデータへのポインターを取得するだけです。

したがって、上記で行ったのとほとんど同じように、比較したいデータの開始点とデータの長さへのポインターを提供することにより、基本的に任意の「範囲」をコピーまたは比較できます。

上記のコードを次のように調整します。

if (memcmp(&data[50], array, 20) == 0) {
    // do thing
}

これはmemcmp、データ配列の添字の 50 番目のアドレスからチェックを開始し、それを配列のアドレスのデータと比較して、20 個の要素をチェックするように指示します。

于 2014-01-28T02:17:37.160 に答える