从文件读取时发生Fortran运行时错误



我正在尝试读取一个.gro文件,它看起来像这样:

1coh      C    1   0.206  -0.049   0.429
1coh     O1    2   0.295   0.048   0.501
1coh     H3    3   0.252  -0.137   0.424
1coh     H4    4   0.186  -0.014   0.337

我需要将0.206-0.0490.429存储到阵列中。我用它来识别行中的coh

open(unit=20,file=grofile2)
do i=1,3
read(20,'(A)')line
lname2=line(6:8)
enddo
close(unit=20)

然后,使用读取特定行

open(unit=20,file=grofile2)
150  read(20,'(A)',end=151)line
if(line(6:8).eq.lname2)then
i=i+1
lig2(i)=line
write(*,*)lig2(i)
endif
goto 150
151  continue
close(unit=20)
natoms2=i

这里的write确实将线路正确地输出到端子。然后我用

do j=1,natoms2
write(*,*) j
write(*,*) lig2(j)
read(lig2(j)(23:28),*)lig2x(j)
read(lig2(j)(31:36),*)lig2y(j)
read(lig2(j)(39:44),*)lig2z(j)
write(*,*) lig2x(j),lig2y(j),lig2z(j)
enddo

以将各个值读取到这些数组中。

在这一点上,我得到了错误:

At line 145 of file samgen.f
Fortran runtime error: Bad real number in item 1 of list input

第145行为:read(lig2(j)(23:28),*)lig2x(j)

此语法已在其他程序中适用于此文件,但在此不起作用。我尝试在读取行中使用F6.3而不是*。我已经检查了变量声明和类型。我做错了什么?有什么想法吗?或者可能是更好的阅读方式?

我以"test.gro"文件为例。

1coh      C    1   0.206  -0.049   0.429
1coh     O1    2   0.295   0.048   0.501
1coh     H3    3   0.252  -0.137   0.424
1coh     H4    4   0.186  -0.014   0.337

"我需要将0.206、-0.049、0.429存储到数组中。"我不明白你的问题后面是什么。这个非常简单的代码能满足您的需求吗?

program read
character :: char1*5, char2*3
integer :: i1
real :: r1, r2, r3
open (30, FILE='test.gro', STATUS='OLD')
do i=1,4
! I would read without format specification: it is much easier
! though type of variable must be correct!
read(30,*)  char1, char2, i1, r1, r2,r3 
!test what I have read:
print*, char1, char2, i1, r1, r2, r3 
end do
close (30)
end program

最新更新