主题:解决了,谢谢,我太大意了,求助,这个小程序怎么错的,郁闷死我了
parameter(max_sta=99999)
character*8 netname(max_sta),staname(max_sta)
real lat(max_sta),lon(max_sta)
open(10,file='./infor_sta1',status='old')
N_sta=0
do i=1,99999
read(10,380,end=99)netname(i),staname(i),lat(i),lon(i)
N_sta=N_sta+1
enddo
99 continue
close(10)
do i=1,(N_sta-1)
do j=(i+1),N_sta
call local_space(netname(i),n1,n2)
write(*,*)'wwwwwwwww'
write(*,*)n1,n2
call local_space(netname(j),n1,n2)
write(*,*)netname(i),netname(j)
write(*,*)n1,n2
enddo
enddo
380 format(A8,A8,F10.4,F10.4)
end
subroutine local_space(str,n1,n2)
character*256 str
logical log_sec
log_sec=.false.
n1=0
n2=len(str)
do i=1,len(str)
if ((str(i:i).eq.' ').and.(n1.eq.0)) then
elseif ((str(i:i).ne.' ').and.(n1.eq.0)) then
n1=i
log_sec=.true.
elseif ((str(i:i).eq.' ').and.(log_sec)) then
n2=i-1
log_sec=.false.
endif
enddo
end
子程序的目的是为了求第一个非空格的字符位置和这个字符后的第一个空格前一个字符的位置,运行输出前面的都是对的(输出7和8),但是当j=N_sta时,输出结果就不对了(变成了7和256),一直找不到原因,还望高手帮助。多谢多谢
其中读取的文件内容为:
FJ DSXP 110.123 25.234
FJ DSXP 110.123 25.234
FJ DSXP 110.123 25.234
character*8 netname(max_sta),staname(max_sta)
real lat(max_sta),lon(max_sta)
open(10,file='./infor_sta1',status='old')
N_sta=0
do i=1,99999
read(10,380,end=99)netname(i),staname(i),lat(i),lon(i)
N_sta=N_sta+1
enddo
99 continue
close(10)
do i=1,(N_sta-1)
do j=(i+1),N_sta
call local_space(netname(i),n1,n2)
write(*,*)'wwwwwwwww'
write(*,*)n1,n2
call local_space(netname(j),n1,n2)
write(*,*)netname(i),netname(j)
write(*,*)n1,n2
enddo
enddo
380 format(A8,A8,F10.4,F10.4)
end
subroutine local_space(str,n1,n2)
character*256 str
logical log_sec
log_sec=.false.
n1=0
n2=len(str)
do i=1,len(str)
if ((str(i:i).eq.' ').and.(n1.eq.0)) then
elseif ((str(i:i).ne.' ').and.(n1.eq.0)) then
n1=i
log_sec=.true.
elseif ((str(i:i).eq.' ').and.(log_sec)) then
n2=i-1
log_sec=.false.
endif
enddo
end
子程序的目的是为了求第一个非空格的字符位置和这个字符后的第一个空格前一个字符的位置,运行输出前面的都是对的(输出7和8),但是当j=N_sta时,输出结果就不对了(变成了7和256),一直找不到原因,还望高手帮助。多谢多谢
其中读取的文件内容为:
FJ DSXP 110.123 25.234
FJ DSXP 110.123 25.234
FJ DSXP 110.123 25.234