主题:急求高手相帮!
下面是一个读取字符的程序。将每行逗号之前的字符取出,最后存入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
结果总是提示: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