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[] を比較できるようにしたい
memcmp
/memcpy
比較またはコピーするデータへのポインターを取得するだけです。
したがって、上記で行ったのとほとんど同じように、比較したいデータの開始点とデータの長さへのポインターを提供することにより、基本的に任意の「範囲」をコピーまたは比較できます。
上記のコードを次のように調整します。
if (memcmp(&data[50], array, 20) == 0) {
// do thing
}
これはmemcmp
、データ配列の添字の 50 番目のアドレスからチェックを開始し、それを配列のアドレスのデータと比較して、20 個の要素をチェックするように指示します。