2013-07-17 43 views
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 

不知道我在做什麼錯誤。有人可以給我一些建議嗎?

回答

0

你的行中有字符串,所以你的READ聲明應該考慮它。你應該

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

其中dumChar是一個長度爲2和dumInt的字符是一個整數代替。

-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=之前刪除的任何空間。 我認爲這是錯誤,因爲代碼是讀取非整數。

+1

我想'k'中前導'2'不重要? –

+0

我剛剛告訴他,如果他從第一列開始輸入文件,他的格式不會給出任何運行時錯誤。可能對你不清楚,或者你還沒有完全閱讀。 – BaRud