1

以下是我正在使用的数据集:

    2             19.000000E-01  4.246377E+24  9000.0        100.0  106.0  1400.0
    2.601629E+4   1E+24          2.232456E+2   0.100000E+00
    0.000000E+00  0.20000E+00    1.000000E+00  5.169046E+4
    0.000000E+00  0.000000E+00   0.000000E+00

我想使用 Gfortran 从左到右读取此文本数据集的元素。但是,我的代码是从上到下阅读的。此外,它并没有读取所有元素。有什么方法可以让我的 GFortran 代码从左到右读取并读取所有元素?

这是我的代码:

  PROGRAM S1
  IMPLICIT NONE

  REAL :: col1
  REAL :: col2, col3
  REAL :: col4, col5
  REAL :: col6, col7
  INTEGER :: IOstatus=0



  open (unit = 1, file = "testing.txt", STATUS = "OLD")
  readloop: DO
  READ (1,*,IOSTAT=IOstatus) col1,col2,col3,col4,col5,col6,col7
  IF (IOstatus /=0) EXIT
  WRITE (*, *) col1,col2,col3,col4,col5,col6,col7
  END DO readloop
  END PROGRAM

谢谢。如果我能提供任何其他信息,请告诉我。

4

1 回答 1

0

问题是 Fortran 逐行(逐行)读取记录。逐列阅读并不是很简单。

当我运行它时,这是我得到的输出:

   2.00000000       1.89999998       4.24637708E+24   9000.00000       100.000000       106.000000       1400.00000
   26016.2891       1.00000001E+24   223.245605      0.100000001       0.00000000      0.200000003       1.00000000

由于 Fortran 逐行读取,它将尝试读取第一行中的所有内容,然后是第二行,依此类推。在这种情况下,循环的第一次迭代从第一行读取七个项目。第二次迭代从第二行读取四个项目,然后从第三行读取三个。第三次迭代尝试读取其余部分,但由于没有其他要读取的项目,因此READ失败并退出循环。

阅读专栏需要一些工作。第一步可能是使您的列变量数组。您可能必须读取记录(行/行)并自己解析它们,或者一次读取一项并手动将它们分类到列中。

另外,看看这篇文章;它可能会提供一些帮助:Reading columns from data file in fortran

于 2013-07-24T14:38:04.157 回答