回 帖 发 新 帖 刷新版面

主题:急求高手相帮!

下面是一个读取字符的程序。将每行逗号之前的字符取出,最后存入atom(50)里面。atom(50)为字符型。
结果总是提示:Program Exception - array bounds exceeded.
实在看不出了,请高手帮忙指出原因。

PROGRAM GET_atom
  INTEGER::I,J,S
  INTEGER::Natom    
  DIMENSION::atom(10) 
  CHARACTER*3::atom
  CHARACTER*3::TEMP          !暂时存放每次取出的原子名称。

  CHARACTER*100:: LINE        !LINE存放每一行的内容。 

  OPEN(2,FILE='T.TXT',STATUS='OLD')  
  Natom=0
  S=0  
  DO WHILE(S.EQ.0) 
    READ(2,'(A100)') LINE
    S=INDEX(LINE,'DATA OVER')             !结束读取的位置。
    
    I=0
    J=1
    TEMP='   '    
    DO      
     I=I+1    
     TEMP(I:I)=LINE(J:J)             !把逗号之前字符的赋给TEMP字符串。 
     J=J+1    
     IF(LINE(J:J).EQ.',') GOTO 10 
    ENDDO

10  Natom=Natom+1
    atom(Natom)=TEMP
    WRITE(*,*)atom(Natom)

  ENDDO 
  CLOSE(2)

END PROGRAM


这是数据文件(T.TXT):

 Si,0,-0.5791359592,0.9614891189,-0.5095626586           
 H,0,0.079755218,2.1930703596,-0.0337848551              
 H,0,-0.5819024017,0.9660820032,-1.9859313842            
 H,0,-1.9758773356,0.9548964613,-0.0337848551            
 H,0,0.5526112353,-0.9174524243,3.0242491772             
 DATA OVER  




回复列表 (共1个回复)

沙发


刚才已找到问题。是WHILE语句的问题。

我来回复

您尚未登录,请登录后再回复。点此登录或注册