我对fortran很新,并且有一个问题。我需要从以下行读取2个整数:
K=234, L=241, I=0
我对最后一个值不感兴趣。只需要整数234和241.我用
尝试了read(20,'(3X,I3,3X,I3)')a,b
它编译,但是当我运行程序时,我总是收到错误消息:
At line 27 of file test.f90 (unit = 20, file = 'int_p2.dat')
Fortran runtime error: Bad value during integer read
不知道我做错了什么。有人可以给我一些建议吗?
答案 0 :(得分:0)
您的行中有字符串,因此您的READ
语句应该考虑到它。你应该用
READ(20, '(3(a2,i3,2x))') dumChar, k, dumChar, l, dumInt, dumChar
其中dumChar
是长度为2的字符,dumInt
是整数。
答案 1 :(得分:-2)
我的代码中没有问题。 (当然,你的格式是错误的,但不应该给出运行时错误)。此外,你正在逃避字符(K,L),而不是阅读它们。编译器不应该抱怨。但是3X
会占用K=234
Program se
Implicit None
integer :: K,L,I,a,b
open(20, file="se.in",status='old')
read(20,'(3X,I3,3X,I3)')a,b
close(20)
write(*,*)a,b
End Program se
$ cat se.in
K=234, L=241, I=0
$gfortran se.f90
$ ./a.out
34 241
如果您仍然遇到问题,如果这是您尝试阅读的单行,请执行此操作
删除文件中K=
之前的所有空格。
我认为这是错误,因为代码读取的是非整数。