【问题标题】:Multidimensional array from text file来自文本文件的多维数组
【发布时间】:2020-02-04 19:15:39
【问题描述】:

我正在寻找一种方法来用从文本文件中获取的数字填充多维数组。 我有一个动态创建的数组(?),但我不确定如何使它成为多维的。

基本上,文本文档有一组数字,用户输入决定矩阵的列数和行数,我需要用文本文档中的数字填充该矩阵。任何帮助表示赞赏

ptrm2 = (int*)malloc(size2 *sizeof(int));

【问题讨论】:

  • 看看Correctly allocating multi-dimensional arrays。如果您将数组如答案所示声明为相邻的一块内存,那么您可以一次性读取/写入整个数组。
  • 要使用malloc 创建一个多维数组,您可以为行分配一个指针数组,然后为列分别分配每个指针,或者使用 as 分配一个单维数组总共需要多个单元格,然后使用算术将多维坐标映射到正确的单元格(例如,row * height + column)。
  • 这个问题可能有 37,292 个重复项——我们是否有一个规范的问题可以指出?
  • @Steve - 取决于您如何区分骗子:(1)按使用“多维”的顺序或(2)按使用“分配!”的顺序

标签: c arrays multidimensional-array scanf


【解决方案1】:

你可以分两个阶段分配一个二维数组,如下(我假设这里的基本数据类型是int,但它几乎可以是任何东西):

int** my2dArray = malloc(sizeof(int*) * n_rows); // Makes one INTEGER POINTER for each of n_rows
for (int n = 0; n < n_rows; ++n) my2dArray[n] = malloc(sizeof(int) * n_cols); // Makes one INTEGER for each column

然后,您可以访问二维数组的任何元素,给定其 rowcolumn,例如:

int value = my2dArray[row][column];

在这里,我假设了使用“行优先级”的传统(标准)方法(因此第一个索引是行)。

【讨论】:

    猜你喜欢
    • 2012-11-23
    • 1970-01-01
    • 1970-01-01
    • 2013-11-08
    • 1970-01-01
    • 1970-01-01
    • 2014-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多