以下是我正在使用的数据集:
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
感谢。如果我能提供任何其他信息,请告诉我。
答案 0 :(得分: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