如何将锯齿状数组与 C 中的另一个数组进行比较?

How to compare jagged array to another array in C?

我一直在尝试在我的项目中使用锯齿状数组,同时这只是一个测试,我将在我的项目中使用它。问题是下面我如何比较每个数组中的每个元素,所以在下面的代码中我有三个数组,在它们之后,我还有一个将用于与第一个数组进行比较,这是我到目前为止所拥有的。

#include <stdio.h>
#include <stdlib.h>

int main(){

  int row0[4] = {0,1,3,0};
  int row1[4] = {5,6,9,10};
  int row2[4] = {9,0,1,10};

  int aux[4] = {9,6,9,10};


  int *result[3] = {row0,row1,row2};

  int size[3] = {4,4,4}, k =0;

  for (int i = 0; i < 3; i++) {

    int *ptr = result[i];

    for (int j = 0; j < size[k]; j++) {


     if(ptr[j] == aux[j])
     {
       printf("%d\n",ptr[j]);
     }

     ptr++;
   }
   printf("\n");
   k++;

   result[i]++;
  }

  return 0;
}

它的结果是5,但我想遍历数组中以5开头的所有值,看看其他所有值是否相等,换句话说我想知道哪个数组等于“aux”数组。

您有(内部)循环:

int *ptr = result[i];
for (int j = 0; j < size[k]; j++)
{
     if(ptr[j] == aux[j])
     {
       printf("%d\n",ptr[j]);
     }
     ptr++;
}

因为您增加了 jptr,所以您增加的太多了。最好删除 ptr++; 行。