检查两个数组是否相等 - C

标签 c arrays

我将如何使用 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_sizeelem_count 声明为 const 没有多大意义(除了相当美观的考虑)。

关于检查两个数组是否相等 - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35050599/

相关文章:

c - 我应该释放使用字符串文字初始化的 char* 吗?

c - 如何根据从二进制文件读取的数据动态分配结构字段?

java - 字符串到整数的转换

ios - 从 Firebase 数组中检索数据

java - 字节数组 : how to know exactly numbers of byte received

c - 加密程序中的段错误

python - 无论如何,C 中是否会自动检测插入值的数据类型,然后将该值存储在该特定数据类型中?

JavaScript--将两个数组对象合并为一个 arr 对象,然后循环遍历每个索引/对象

android - Android系统的GID/UID是什么?

arrays - 如何按 Lua 中的值对表进行排序?