1

我对 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

不知道我做错了什么。有人可以给我一些建议吗?

4

2 回答 2

1

你的行中有字符串,所以你的READ陈述应该考虑到它。您应该将其替换为

  READ(20, '(3(a2,i3,2x))') dumChar, k, dumChar, l, dumInt, dumChar

其中dumChar是长度为 2 的字符,dumInt是整数。

于 2013-07-17T15:32:59.623 回答
-2

我在您的代码中没有看到问题。(当然,你的格式是错误的,但不应该给出运行时错误)。此外,您正在转义字符 (K,L) 而不是阅读它们。编译器不应该抱怨。但3X会吃掉 1 个整数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= 我认为这是错误,因为代码正在读取非整数。

于 2013-07-17T16:16:35.640 回答