1

使用 memcpy 或 memcmp 时是否可以使用范围?

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

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

我希望能够将 (20) 键数据 [50-70] 与数组 [] 进行比较

4

1 回答 1

1

memcmp/memcpy只需将指针指向您要比较或复制的数据。

因此,您基本上可以通过提供指向要比较的数据的开头和数据长度的指针来复制或比较任何“范围”,就像您在上面所做的那样。

调整上面的代码如下:

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

这告诉memcmp从数据数组的第 50 个下标的地址开始检查,并将其与数组地址处的数据进行比较,并检查 20 个元素。

于 2014-01-28T02:17:37.160 回答