【发布时间】:2018-07-28 08:01:24
【问题描述】:
我想从文本文件中读取两个数字n,m,然后分配一个包含n 行和m 列的二维数组。
另外,我想在 main 函数中初始化数组,以便稍后在其他函数中使用它,并在另一个函数中进行读取和分配,我将从 main 函数调用。
我知道如何处理读取,但我正在为数组分配而苦苦挣扎。
我在这里阅读了很多类似问题的答案,但它们对我没有帮助。
我已经编写了以下代码,但不确定如何继续使用它以获得所需的结果:
void func(int** array, int* rows, int* cols){
int n, m;
FILE *file;
fp = fopen("test.txt", "r");
if (file) {
/* reading numbers n and m */
*rows = n;
*cols = m;
**array = (int*)malloc(n * m * sizeof(int));
fclose(file);
}
}
int main() {
int rows, cols;
int** array;
func(&array, &rows, &cols);
return 0;
}
我想也许我应该先用calloc 分配一个二维数组,然后在阅读n,m 后使用realloc,但不确定这是否是最佳做法。
根据我从文本文件中读取的维度分配二维数组的最佳做法是什么?
【问题讨论】:
-
这是什么:&&array
-
@machine_1想要传递一个指向数组的指针。
-
@Itay4 有什么问题?
-
您不能为
func中的参数int **array分配,除非返回新分配的指针以在调用者中分配。func接收指针的副本(其地址与main()中的array完全不同)。为了在不提供返回的情况下进行分配,那么您必须传递array的地址(例如,参数必须是func (int ***array, *rows, *cols)并将其称为func (&array, &rows, &cols),您必须同时分配指针和存储对于m每个指针的整数。(注意:成为 C 中的 3 星程序员 并不是恭维) -
@DataChanturia 问题是根据我从文本文件中读取的维度分配二维数组的最佳实践是什么。
标签: c multidimensional-array c89