我对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
不知道我做错了什么。有人能给我一些建议吗?
您的行中有字符串,因此READ
语句应该对此进行说明。您应该将其替换为
READ(20, '(3(a2,i3,2x))') dumChar, k, dumChar, l, dumInt, dumChar
其中CCD_ 2是长度为2的字符并且CCD_。
我认为您的代码没有问题。(当然,您的格式是错误的,但不应该给出运行时错误)。此外,您正在转义字符(K,L),而不是读取它们。编译器不应该抱怨。但是3X
将占用K=234
的1个整数
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=
之前的所有空间我认为这是错误,因为代码读取的是非整数。