Matrix 如何将整数扫描成方阵(2D数组)?(编译前矩阵大小未知)

Matrix 如何将整数扫描成方阵(2D数组)?(编译前矩阵大小未知),matrix,scanning,Matrix,Scanning,编辑:我希望我能删除这个问题,我能把它弄明白。谢谢大家! 我需要将一些整数扫描到2D数组(方阵)中。运行文件后,矩阵将以以下形式输入(逐行): 编辑:我最大的问题是在不丢失任何输入行的情况下确定数组的大小 4 4 1 1 4 4 1 1 3 2 2 3 4 1 1 1 该代码应适用于任何nxn矩阵。然后我必须能够对矩阵做一些算术运算 我已经浪费了很多时间试图弄明白这一点,我取得了0的进步,这真的让我很沮丧。我想,为了计算矩阵的大小,我需要扫描第一行,但是当我扫描第一行时,我丢失了那些整数!?我

编辑:我希望我能删除这个问题,我能把它弄明白。谢谢大家!

我需要将一些整数扫描到2D数组(方阵)中。运行文件后,矩阵将以以下形式输入(逐行):

编辑:我最大的问题是在不丢失任何输入行的情况下确定数组的大小

4 4 1 1
4 4 1 1
3 2 2 3
4 1 1 1
该代码应适用于任何nxn矩阵。然后我必须能够对矩阵做一些算术运算

我已经浪费了很多时间试图弄明白这一点,我取得了0的进步,这真的让我很沮丧。我想,为了计算矩阵的大小,我需要扫描第一行,但是当我扫描第一行时,我丢失了那些整数!?我想我也应该使用指针


我几乎没有使用C的经验,也许有经验的人可以告诉我代码应该是什么样子,这样我就可以学习了。

我建议检查
malloc
的工作原理,它允许您动态分配内存。开始的好地方

看起来您在读取文件时正在填写矩阵,而您不知道有多少数据。我认为你能做的是使用指向其他链表的指针,这允许你制作一个可变大小的2D矩阵

一些开始


祝你好运

空字符(
\0
)用于标记字符串的结尾。它会自动附加在任何字符*的末尾。这意味着您可以读取整个文件,然后拆分每一行(
\n
),然后将它们组合到您要查找的2D字符数组中。

您可以采取四种方法:

  • 在文件的第一行编码矩阵的大小,大多数编码练习这样做是为了简化数据加载。它在许多协议中也有先例,比如HTTP,它在长度头中显式地编码大小。如果您可以控制数据格式,那么这是最容易实现的

  • 使用可以动态扩展的数据结构,如链表或动态增长数组(类似于C++向量)。您必须首先实现或找到一个实现这些数据结构的库,然后才能轻松地处理可变大小的数据

  • 对数据进行两次传递,第一次传递是计算需要分配的数组的大小,然后fseek()将文件返回到开头,并在第二次传递中读取数据

  • 前一种方法的一种变体是将数据读入可变大小的数据结构,然后将其转换为常规数组(或更适合使用的其他数据结构)


  • 向我们展示您迄今为止所做的工作。可能重复我希望我有任何东西可以展示,但我一直在尝试查找数组的大小,同时将输入行放入数组中。步骤1)使用
    fgets()
    读取一个宽缓冲区,例如1000
    char
    。2) 解析
    int
    s。3) 现在代码知道一行中
    int
    的数量。4) 倒带文件5)分配6)读取矩阵Ayrton Twigg,重要::您是从文件中读取还是从stdin中读取?我以前查看过,但我的问题是在分配内存之前先计算出数组的大小。。。我在任何地方都找不到这样做的方法。我正在考虑类似的事情,但我找不到一种将字符转换为整数的好方法。获取文件的第一行,然后在找不到空字符的情况下通过迭代获取其长度,怎么样?