Re: [請益] FORTRAN讀檔案的問題
謝謝mouseforlove & terryys,我用判別式的方法解決讀取test_1到test_12搞定。
以下是我寫的程式:
Program read
Dimension POINT(3, 10000) ! 設定矩陣維度,3行N列。
! 讀test_1 ...到 test_12 有10個檔
character(len=11) inputname ! 檔案有6個字元隨便設定大於6的數字。
10 FORMAT(1X, 3(/X, 3F10.5)) ! 輸出的檔案格式 Raw data。
do i = 1,12 ! 我要讀入12個檔案
if (i.lt.10) then
write(inputname,"(a5,i1)")'test_',+i
elseif (i.ge.10.and.i.lt.100) then
write(inputname,"(a5,i2)")'test_',+i
elseif (i.ge.100.and.i.lt.1000) then
write(inputname,"(a5,i3)")'test_',+i
elseif (i.ge.1000.and.i.lt.10000) then
write(inputname,"(a5,i4)")'test_',+i
elseif (i.ge.10000.and.i.lt.100000) then
write(inputname,"(a5,i5)")'test_',+i
endif
open(1,file=inputname)
read(1,*) POINT ! 讀進
write(*,10) POINT ! 秀在螢幕
write(*,*) "test_",i
enddo
Stop
END
※ 引述《mouseforlove (我是瓜呆)》之銘言:
: 感謝terryys
: 如果希望檔名是test_0001-test_0010的格式,下面的code可改為
: do i=1,10
: write(iname,'(a5,i0.4)') 'test_',i
: enddo
: 這樣就不需要判別式了!
: 我在處理類似test_01-test20檔名的部分,會在迴圈裏面多加判別式
: do i=1,20
: if (i.lt.10) then
: write(iname,'(a6,i1)') 'test_0',i
: elseif (i.ge.10.and.i.lt.100) then
: write(iname,'(a5,i2)') 'test_',i
: endif
: enddo
: 雖然這樣寫不是很聰明,不過處理數量少的資料還是可以參考一下
: 另外
: : write(inputname,"(a5,i6)")'test_',000000+i
: :C 請問大家,我這一行有寫錯嗎?
: 這個部分出在000000+i,如果i=5計算結果會是5,而不是000005,
: inputname會變成'test_ 5'
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.20.237
※ 編輯: py94g 來自: 140.113.20.237 (05/07 21:29)
討論串 (同標題文章)
Fortran 近期熱門文章
PTT數位生活區 即時熱門文章