首页 > 解决方案 > 如何将锯齿状数组与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 开头的数组中的所有值,以确定所有其他值是否相等,换句话说,我想知道哪个数组等于“辅助”数组。

标签: cjagged-arrays

解决方案


你有(内部)循环:

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++;线。


推荐阅读