将文本文件输入到c中的2d数组中

雷蒙德博斯
#include<stdlib.h>
#include<stdio.h>

int main() {

  FILE* file = fopen ("fourth.txt", "r");
  int i = 0;
  int rows=0;
  int rows2=0;
  int columns=0;
  int counter=0;
  int length=0;
  int multiply=0;

  fscanf (file, "%d", &i);
  rows=i;

  printf("the rows are %d\n", i);

  int matrix[rows][rows];
  length=rows*rows;

  if (rows<=0) {

      printf("error, this file cannot be processed");
      return 0;
  }

  do
  {
      if (fscanf(file, "%d", &i)==1) {

          if (counter<length) {

              matrix[rows2][columns]=i;
              counter++;
              columns++;

              if (columns==rows) {
                  rows2++;
                  columns=0;
              }
          }
          multiply=i;
      }
  } while (!feof(file));

  fclose (file);

  for ( int c = 0; c < rows; c++ ) {
      for ( int j = 0; j < rows; j++ ) {
          printf("matrix[%d][%d] = %d\n", c,j, matrix[c][j] );
       }
  }

  printf("the multiply is %d", multiply);

我正在尝试创建矩阵指数(换句话说,矩阵乘法)。但是,在执行实际的数学过程之前,我必须从txt文件中读取数字作为输入并将其存储在2d数组中。以上是到目前为止我从代码中获得的信息,但是,我正在努力将数字实际输入到数组中,因为当我在最后测试2d数组时,我得到的结果很奇怪。

例如:1.输入:

3
123
456
789
2

3表示行数,此行与该特定2d数组的列数相同,因为矩阵为正方形,这意味着所有行和列都相同。

2代表指数,这是我必须乘以原始矩阵的次数。

但是我的输出是

矩阵[0] [0] = 123
矩阵[0] [1] = 456,
矩阵[0] [2] = 789
矩阵[1] [0] = 2
矩阵[1] [1] = 4214800
矩阵[1] [2] = 0
矩阵[2] [0] = 3
矩阵[2] [1] = 0
矩阵[2] [2] = 0

预期输出必须为:

123
456
789

在二维数组中

有什么理由吗?

另外,我将如何修改代码,以便无论txt文件中关于不同行和列的输入是什么,我仍然可以格式化适当的2d数组。谢谢

J ... S

在输入文本文件中,一行中的数字不会以任何方式分开。如果需要多位数字,请考虑使用空格或分号之类的符号将它们分开。

如果矩阵只有一位整数(即从0到9的数字),那就很好了。

但是,如果一行中的3个数字分别是21、13和4,那么在输入文件中它将是just 21134

无法找到它是211,3,4还是21,1,34或2,113,4或.......

随着fscanf()在你的程序中,每个%d将读取整行考虑它是一个数字,并将其分配给变量i

与其先将尺寸读入i然后复制为rows喜欢

fscanf (file, "%d", &i);
rows=i;

您可以直接阅读 rows

fscanf( file, "%d", &rows);

并读取类似的值

for(rows2=0; rows2<rows; ++rows2)
{
    if( fscanf(file, "%1d%1d%1d", &matrix[rows2][0], &matrix[rows2][1], &matrix[rows2][2]) != 3)
    {
        perror("Error");
        break;
    }
}

然后multiply这样读取最后的值

fscanf(file, "%d", &multiply);

您可以检查返回值fscanf()以检查是否发生任何错误。

您曾经!feof(file)检查文件结尾。我不太了解,但在这里看看

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将文本文件复制到Java中的2D char数组中

如何将文本文件存储到2d int数组中

将输入从文本文件存储到数组中

如何将文本文件中的值存储到2D Numpy数组中?

用Java逐字符读取文本文件到2D数组中

如何将2d numpy数组保存到文本文件中

如何使用BufferedWriter将2D数组保存到文本文件中?

在C编程中使用结构的双指针将文本文件中的Matrix读取为2D数组

从输入文本文件填充2D数组

从文本文件(例如[[1,2],[3,4]])输入到python中的2d列表中

如何使用PLinq将2d文本文件读取到2d数组中

将文本文件读入2D数组

将文本文件读入2D数组

在python 3中,我如何将数据从2d数组传输到csv文本文件

在2D数组中搜索带分隔符的文本文件

按列读取文本文件并在Java中创建2d数组

如何使用fgets从文本文件打印到2D数组中?

将十进制数从文本文件存储到 C 中的数组

将输入文件存储到2D数组C ++中

文本文件的3d到2d转换并自动在Matlab中粘贴/加载.m文件

使用 bufferedReader 将文本文件中的特定文本存储到数组中

我将如何使用 C++ 将纯文本文件中的单词存储到数组中?

如何扫描文本文件并将字符输入到数组中?

使用Ajax和PHP将文本文件转换为2D JavaScript数组

如何将文本文件转换为2D字符数组?

Java:将文本文件转换为2D数组

如何将矩阵/ 2D数组写入文本文件python

VB正在将文本文件读入2D数组吗?

将文本文件拆分为2D数组