我将如何使用 memcmp 检查两个数组的相等性?
bool array_is_equal(const void *array_one, void *array_two, const size_t elem_size, const size_t elem_count)
我有这样的东西:
int i;
for(i = 0; i < elem_count; i++){
if(memcmp(array_one, array_two, elem_size) == 0) {
return true;
}
i++;
}
return false;
其中 elem_size 是每个数组元素在数组一中使用的字节数
最佳答案
如果您只关心两个数组对象的二进制相等性,那么您甚至不需要循环
bool array_is_equal(const void *array_one, void *array_two,
const size_t elem_size, const size_t elem_count)
{
return memcmp(array_one, array_two, elem_count * elem_size) == 0;
}
目前还不清楚为什么数组 array_two
突然变得非常量(而数组 array_one
是常量)。将 elem_size
和 elem_count
声明为 const 没有多大意义(除了相当美观的考虑)。
关于检查两个数组是否相等 - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35050599/