2013-10-16 68 views
-2

我有一些值写在文件4,我需要再次阅读他们的新计算,但我收到分段故障错误,而我正在运行代码,这个问题发生在读命令“读(4,*)NNrow( I),Niz(I),NNbin(I),Nfi(I),NfiStdDev(I),NfiAvr(I),NMagbin(I),Nzup(I)“ 我该如何解决这个问题?如何解决“分段故障”错误?

 do j=1,nmax 
      if (zb(iz,im,j).ne.0) then 

       call Romberg (dix,dDistCa,zb(iz,im,j),zup(iz))     !COMOVING DISTANCE 
       Vmax=dix*S         !COMOVINF VOLUME 
       fi=fi+1/Vmax         !LUMINOSITY FUNCTION 
write(2,'(i5,2x,f9.4,2x,f8.5,2x,3f14.10)')j,magbin,zbin,S,Vmax,dix 
      endif 

     enddo 

      if (Nbin.ge.n_thresh) then 
    Nrow=Nrow+1 
write(4,'(3i7,2x,f25.8,2x,2f20.8,2x,f9.4,2x,f8.5)')Nrow,iz,Nbin,fi,fiStdDev,fiAvr,magbin,zup(iz) 
      endif 
       enddo loopmag 

rewind(4) 
close(4) 


write(*,*)Nrow 
open(4,file='luminosity_func_I.asc') 

allocate (fiStdDev2(Nrow),stat=ok) 
allocate (fi_expected(Nrow),stat=ok) 
allocate (DFI(Nrow),stat=ok) 
allocate (CHISQ(Nrow),stat=ok) 
! Ln10=2.3025 
A=0.4*2.3025 
      do I=1,Nrow  ! NDATA=NMAX 
      write(*,*)I 
       read (4,*) NNrow(I),Niz(I),NNbin(I),Nfi(I),NfiStdDev(I),NfiAvr(I),NMagbin(I),Nzup(I) 

        fiStdDev2(I)=1/NfiStdDev(I)*NfiStdDev(I) 
      write(*,*)fiStdDev2(I) 
        fi_expected(I)=A*fi_star*10**(0.4*(alpha+1)*(M_star-NMagbin(I)))*exp(-10**(0.4*(M_star-NMagbin(I)))) 
        DFI(I)=fi_expected(I)-NFI(I) 
        CHISQ(I)=DFI(I)*DFI(I)*fiStdDev2(I) 
      END DO 
+3

不,不,不。不要再次发布相同的问题。 [错误发生“段错误”](http://stackoverflow.com/questions/19400039/errors-with-segmentation-fault-occurred) –

回答

-1

我不是FORTRAN专家,但在Linux上从我的C经验,所有我想说的是不断调试,直到你找到原因,可能是变量的一个没有正确的初始化和使用的就是这样。

什么是你的代码中的I?你有初始化它?

+0

是的,我需要读取和使用所有这些值作为数组 – user2717742