c - 如何在 C 中比较两个二维数组?

标签 c arrays

我尝试了一下,但是这段代码运行不稳定。

有两个二维数组first[a][b]second[x][y]

我想比较这两个数组。我怎样才能做到这一点?

我的代码:

    for (int i = 0; i < 10; i++) 
        for (int j = 0; j < 10; j++)
            if (first[i][j] == second[i][j])
                return 1;

最佳答案

另一种方法是使用memcmp

注意:这适用于现代架构,其中 int 没有任何填充位。感谢 @chqrlieforyellowblockquotes 指出这一点。

#include <stdio.h>
#include <string.h>

int main() {
  int a[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
  int b[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
  int c[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 123}};
  int ret;

  ret = memcmp(a, b, 3 * 3 * sizeof(int));

  if (ret == 0)
    printf("a equal b\n");
  else
    printf("a not equal b\n");

  ret = memcmp(a, c, 3 * 3 * sizeof(int));

  if (ret == 0)
    printf("a equal c\n");
  else
    printf("a not equal c\n");

  return 0;
}

输出

a equal b
a not equal c

关于c - 如何在 C 中比较两个二维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61120864/

相关文章:

c - c中具有不同类型参数的可变参数函数

c++ - C/C++ 中的显式转换

c - 如何在 C 中检查用户输入的长度?

python - 删除 python 中的数组值

java - 替换数组中的重复字符

java - 过滤机会枚举并根据随机机会选择一个

c - 在不使用循环的情况下确定特定元素的数组索引

c - 调试断言失败,使用 C 的输入格式无效

c - 在 C 中为 char 数组赋值不起作用

php - 如何像mysql一样对数组进行排序