我想分配一个二维数组(在 C 或 C++ 中),其中行未知但列已知。我不想首先分配我的行 n 大小,因为当我想要输入时,数组的第一行将使用已知的列大小进行分配->然后我接受我的输入->将其放入数组的第1行中。然后,如果我想要一个输入,数组的第二行将使用已知的列大小进行分配->然后我接受我的输入->把它放在我的数组的第 2 行。这个过程将运行未知的行数,我想保留所有输入以供进一步处理。当我按 Enter 按钮两次时,输入将停止,下一个过程将开始,这不是这里关心的问题。我应该做什么这或者这在 C 或 C++ 中是否可能?给我完整的功能代码将非常有帮助,因为我对指针或数组或与此问题的解决方案相关的其他事物知之甚少。
最佳答案
与使用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;
关于c++ - 如何在c/c++中已知列的情况下一次按行动态分配二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24547205/