读取整数语句



我对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=之前的所有空间我认为这是错误,因为代码读取的是非整数。

最新更新