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