gFortran运行时错误:列表输入的项1中的实数错误:错误终止.回溯:



这是.dat文件2000 x 2000,我正在尝试在fortran中读取.dat文件,我是fortran的初学者,并尝试了所有不同的方法来读取该文件。当我运行该文件时,它会给我Fortran运行时错误:列表输入错误的第1项中的错误实数。如果有人能向我解释,这里发生了什么?

我还检查了一下,我想读取的文件在当前目录中。

我必须在编译器中打印这个.dat文件。我的代码中有什么小错误吗?这里是数据的前三行,它的图像数据

1.13000000e+02 1.1300000e+02 1.11300000e+0.2 1.13000000e+02 1.15000000e+02 1.115000000e+202 1.15000000 e+02 1.145000000e+02 1.1600000e+02 1.1600000e+02 11600000e+01 1.1600000e+2 1.1600000e+0.2 1.1600000e+02 1.1600000 e+02

这里有两种不同的方法,我试图获得数据,(还有更多的方法我尝试过,但没有成功,显示我尝试过显示我最近尝试的(

program testpro
implicit none
!reads data from a file called mydata.dat
real :: i,j
open(unit=10,file='mydata.dat')
read(10,*) i,j
print *,i,j
end program  testpro


program Test2
REAL :: mx,my,mz
doubleprecision, allocatable, dimension(:,:,:) :: B
integer :: i, j, k

read (*,*) mx,my,mz             
open(10,file='mydata.dat',status='old')
read (10,*) mx,my,mz
allocate (B(mx,my,mz) )
read(10,*)(((B(i,j,k),i=1,mx),j=1,my),k=1,mz)
close(10)
end program Test2

您的文件包含imax*jmax值(imax行和jmax行(。因此,在每行中,您必须读取1jmaxj值,并对1imaxi行重复此操作。要做到这一点,您需要管理阵列中的数据。我建议创建一个维度为(imax,jmax)的变量x,并使用嵌套循环进行读取。例如

PROGRAM TEST_read_from_file
IMPLICIT NONE
INTEGER          :: i, j
integer, parameter :: imax=10,jmax=5
REAL :: x(imax,jmax)
! create the test.dat file
Open (unit=1,file='./test.dat',status='unknown')
do i=1,imax
write (1,*) (rand(0),j=1,jmax)
enddo
close(1)
! read the file test.dat
Open (unit=2,file='./test.dat',status='old')
do i=1,imax
read (2,*) (x(i,j),j=1,jmax)
enddo
close(2)
! write x on the terminal
do i=1,imax
write(*,*) (x(i,j),j=1,jmax)
enddo
END PROGRAM TEST_read_from_file

注意,2000x2000阵列可能太大(4°000°000值(

最新更新