如何在不知道尺寸的情况下声明二维数组?

How to declare a 2d Array without knowing the dimensions?

我有一个 C 编程任务,我必须从文本文件中读取并将输入存储在二维数组中。但是文本文件只包含矩阵,不存储有关行和列的信息。我的程序将使用多个输入进行测试,因此二维数组不应具有固定大小。但是这个矩阵保证是正方形的。我已经在网上搜索了几个小时,但找不到解决方案。那么,当使用多个输入文件进行测试时,如何将此矩阵存储在具有动态尺寸的二维数组中?

注意: 从措辞上看,这似乎是一道作业题。因此,我不会 post 任何直接代码。

你的矩阵保证是正方形,这意味着你的相同列。这意味着您只需扫描第一行即可知道需要多少行 需要多少列。

让我们假设您的矩阵将存储在 .csv(逗号分隔变量)文件中。您的数据是

n1, n2

n3, n4

简单地以纯文本形式读取文件,计算在行尾之前找到的分隔符的数量。在这种情况下,您在第一行发现了一个逗号,这显然意味着您有 2 个条目,因此是 2 列 2 行;如果你有 3 个逗号,你将有 4 个条目,因此有 4 列乘 4 行。

n1, n2, n3, n4

n5, n6, n7, n8

n9, n10, n11, n12

n13, n14, n15, n16

从那里开始,您只需要 malloc 一个 n 乘 n 的数组,其大小与您刚刚计算的大小相同。