C:在多维数组中打印整行

时间:2013-04-11 13:59:23

标签: c multidimensional-array

我在C中有一个二维数组,如下所示:

int pop[18000][3] = {
  0, 1, 24,
  0, 2, 46,
  /* many other rows */
  6, 17999, 10,
  6, 18000, 10,
};

我想要做的是编写一个函数来检查每一行的最后一个值,如果它有一定值,则返回整行。我知道我可以用凌乱的方式做到这一点

for (i = 0; i <= 2; i++)
  if (pop[i][1] == 10)
    printf("%d, %d, %d\n", pop[i][0], pop[i][1], pop[i][2]);

但我实际上正在寻找一种更通用的解决方案,允许我打印选定的整行(在某些模拟中,我可能最终创建二维数组,如果不是数百列;我不我不得不使用凌乱的方法。)

3 个答案:

答案 0 :(得分:2)

for(i=0;i<18000;i++)
{

 if(pop[i][2] == 10) // u sed last column
 for(j=0;j<3;j++)
       printf("%d",pop[i][j]);
 }

有用吗?

答案 1 :(得分:0)

使用辅助函数:

void printArray(int *array, int length) {
    for (int i = 0; i < length; ++i) {
       printf("%d", array[i]);
    }

    printf("\n");
}

用法:

for (i = 0; i < ROWS_COUNT; i++)
  if (pop[i][COLUMNS_COUNT - 1] == 10)
     printArray(pop[i], COLUMNS_COUNT); 

答案 2 :(得分:0)

我会分配一个长度为rows*columns的一维数组,并使用以下函数:

void print(int *pop, int index, int value, int rows, int columns) {

    int i,j;

    for(i=0; i<rows; i++) {
        if(pop[i+(j-1)*index] ==  value) {
            for(j=0; j<columns; j++) {
                printf("%d, ", pop[i+j*columns]);
            }
            printf("\n");
        }
    }
}

当您调用该函数时,您只需将数组作为参数传递,其中包含行数和列数以及要在其上检查值index的列号value。通过这种方式,您可以将任意二维数组的函数用于任意列号和值

// ...

int rows = 18000;
int columns = 3;
int index = 3;
int value = 10;
int *pop = malloc(sizeof(int)*rows*columns);

// Fill your pop array here

print(pop, index, value, rows, columns);

// ...