gpt4 book ai didi

io - 从文件读取期间Fortran运行时错误

转载 作者:行者123 更新时间:2023-12-03 09:07:03 26 4
gpt4 key购买 nike

我正在尝试读取一个看起来像这样的.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

关于io - 从文件读取期间Fortran运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53213887/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com