我想分配一个2d数组(在C或c++),其中行是未知的,但列是已知的。我不想首先分配我的第n行大小,因为当我想要输入时,数组的第一行将分配已知的列大小->然后我把我的输入->放在我的数组的第一行。然后,如果我想要输入,数组的第二行将分配已知的列大小->然后我把我的输入->放在我的数组的第2行。此进程将运行未知数量的行,我希望保留所有输入以供进一步处理。当我按Enter键两次输入将停止,下一个过程将开始,这不是一个问题在这里。给我完整的功能代码将非常有帮助,因为我对指针或数组或其他与这个问题的解决方案相关的东西知之甚少。
与使用realloc
类似,您可以使用malloc
一次分配一行。下面给出了一个固定列ARRAY_WIDTH
的动态增长阵列。每行的输入期望ARRAY_WIDTH
值。例子:
#define ARRAY_WIDTH 10
/* psuedo code for array of ints with fixed columns = ARRAY_WIDTH */
int *array[ARRAY_WIDTH];
int idx = 0;
int j = 0;
/* get your input with getline in a while loop */
{
array[idx] = malloc (sizeof (array)); /* allocate fixed width */
/* assign values to array 0 <= values < ARRAY_WIDTH */
for (j = 0, ptr = buffer; j < ARRAY_WIDTH; j++, ptr++)
array [idx][j] = /* your data */;
idx++;
}
int nrows = idx;