老师换成了你说的 
str=adjustl(str) 
if(index(str,"NODE")==1)then 
还是不对,结果是1,我要读的是以NODE开头那行下面有数字的4行,程序的正确结果应该是4才对。我的意思是从数字1那行开始计数,读一行加1,读到第四行就是4。 
 
然后我又想了这个方法:[Fortran] syntaxhighlighter_viewsource syntaxhighlighter_copycode program test
    implicit none
    integer:: error,count=0
    character,parameter::nodes="NODE"
    character(len=512) str
    
    open(12,file="NLIST.txt")
   do
    read(12,'(a512)',iostat=error)str
    if(error/=0)exit
    
     str=adjustl(str)
    if(str(:len(nodes))==nodes)then
        read(12,'(a512)',iostat=error)str
        if(error/=0)exit
        COUNT=COUNT+1
    end if
    end do
    close(12)
    write(*,*)count
    end program 
结果还是1, 
 
综上,所以我觉得问题是定位到了以NODE开头哪一行后,程序接下来的命令是不是只读了一行?根本就没有读到以数字4开头哪一行.所以结果才是1的。是不是这个问题? |