[英]Reading columns from data file in fortran
我編寫了以下塊以讀取外部數據文件:
open(unit=338,file='bounnodes.dat',form='formatted')
DO I=1,NQBOUN
DO J=1,NUMBOUNNODES(I)
read(338,2001) NODEBOUN(i,j)
write(6,*) 'BOUNDARY NODES', NODEBOUN(i,j)
ENDDO
ENDDO
2001
FORMAT(32I5)
據我了解,這應該從bounnodes.dat
讀取2 x 32數組。 但是,在讀取過程中出現錯誤end-of-file
並且它打印第一列。
我試圖使用相同的代碼讀取32 x 2的數組,它讀取第一列的32個元素,但為下一列輸出0s
。
您能解釋一下發生了什么嗎? 我的格式有誤嗎?
Fortran中的每個已讀語句都會前進到下一條記錄。 這意味着普通文本文件中將換行。 嘗試這個:
DO I=1,NQBOUN
DO J=1,NUMBOUNNODES(I)
read(338,2001,advance='no') NODEBOUN(i,j)
write(*,*) 'BOUNDARY NODES', NODEBOUN(i,j)
ENDDO
read(338,*)
ENDDO
其中NQBOUN是行數,NUMBOUNNODES(I)是一行中的列數。 (我總是遇到問題,什么是32x2與2x32)
您可以使用隱含的方法使其更短
DO I=1,NQBOUN
read(338,2001) ( NODEBOUN(i,j) , j=1,NUMBOUNNODES(I) )
write(*,*) ( 'BOUNDARY NODES', NODEBOUN(i,j) , j=1,NUMBOUNNODES(I) )
ENDDO
甚至
DO I=1,NQBOUN
read(338,2001) NODEBOUN(i,:)
write(*,*) 'BOUNDARY NODES', NODEBOUN(i,1:NUMBOUNNODES(I))
ENDDO
所有這些都使用Fortran 90功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.