我一直在瘋狂嘗試讀取一些數據到我的簡單程序中的數組。我無法弄清楚爲什麼我會遇到分段錯誤。我的代碼開始:Fortran中的非常簡單的程序給了我一個分段錯誤。非常困惑
program guess_input
implicit none
CHARACTER*2, allocatable, dimension(:) :: element
double precision, allocatable, dimension(:,:) :: xyzq
INTEGER, allocatable, dimension(:) :: label,cs_num, br_num, xx_num
real, allocatable, dimension(:) :: distance
real, allocatable, dimension(:) :: ep
INTEGER :: stat, numatom, i, j
CHARACTER*80 :: line
numatom = 61502
allocate(element(numatom))
allocate(xyzq(4,numatom))
allocate(label(numatom))
OPEN(UNIT=22,FILE='EMBQ_EPF.OUT',iostat=stat)
If(stat.ne.0) Stop "File not found"
!Read in the input into two arrays
do i=1,numatom
READ(22,'(A)') line
READ(line, *) xyzq(1,i), xyzq(2,i), xyzq(3,i), xyzq(4,i), label(i)
enddo
CLOSE(22)
!Define element type in parallel array based on the charge
do i=1,numatom
if(xyzq(4,i) == 1.00) then
element(i) = 'Cs'
elseif(xyzq(4,i) == -1.00) then
element(i) = 'Br'
else
element(i) = 'XX'
endif
enddo
OPEN(33, FILE='element.out')
do i=1,numatom
write(33,*) element(i)
enddo
end program guess_input
我試過隔離錯誤,但我真的不能解決什麼問題。
任何幫助將不勝感激,謝謝。
沒有輸入文件就很難猜測。我生成了一些假輸入(在python中:'for i in xrange(61502):fd.write(「%d \ t%d \ t%d \ t%d \ t%s \ n」%(1, -1,-1,-1 + i%5,'22'))'),工作正常。 – abbot
你能告訴我們它的段錯誤嗎?使用GDB或其他? – tpg2114
由於您只發布了一部分代碼,並且您沒有確定發生分段錯誤的行或塊,因此您可以向我們保證,您發佈的片段會導致分段錯誤,這樣我們就不會浪費時間尋找錯誤的地方。 –