如何将锯齿状数组与 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++;
}
因为您增加了 j
和 ptr
,所以您增加的太多了。最好删除 ptr++;
行。
我一直在尝试在我的项目中使用锯齿状数组,同时这只是一个测试,我将在我的项目中使用它。问题是下面我如何比较每个数组中的每个元素,所以在下面的代码中我有三个数组,在它们之后,我还有一个将用于与第一个数组进行比较,这是我到目前为止所拥有的。
#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++;
}
因为您增加了 j
和 ptr
,所以您增加的太多了。最好删除 ptr++;
行。