Re: [問題] 連續變數名稱跟加法的設定

看板Fortran作者 (動物先生)時間11年前 (2013/05/19 17:43), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串5/5 (看更多)
※ 引述《zmack0905 (降太)》之銘言: : 標題: Re: [問題] 連續變數名稱跟加法的設定 : 時間: Thu May 16 09:41:54 2013 : : DO i=1,333 : DO j=1,495 : DO k=1,35 : READ(10,*)A(i,j,k) : END DO : END DO : END DO : : 1.READ回報錯誤編號(24)forrtl: severe (24): end-of-file during read, unit : : 簡單的說就是宣告讀值的範圍比實際的檔案大 : 不過在以前用 : : DO i=1,333 : DO j=1,495 : READ(10,*)S1(i,j),S2(i,j),S3(i,j),S4(i,j), : & S5(i,j),S6(i,j),S7(i,j),S8(i,j), : & S9(i,j),S10(i,j),S11(i,j),S12(i,j), : & S13(i,j),S14(i,j),S15(i,j),S16(i,j), : & S17(i,j),S18(i,j),S19(i,j),S20(i,j), : & S21(i,j),S22(i,j),S23(i,j),S24(i,j), : & S25(i,j),S26(i,j),S27(i,j),S28(i,j), : & S29(i,j),S30(i,j),S31(i,j),S32(i,j), : & S33(i,j),S34(i,j),S35(i,j) : ENDDO : ENDDO : : 都OK...難道這種兩種寫法是不一樣的? 是的,這兩種方法當然不一樣 = =" 因為就如推文的板友所說的資料結構不同,所以才會這樣, 遇到這種狀況就是把讀進去的資料立刻寫出來,看是不是你要的東西。 先讀一層就知道他有沒有擺放在正確的位置了。 或許你應該要用: do i=1,333 do j=1,495 read (10,*) (s(i,j,k)k=1,35) enddo enddo 或者把k包在最外面也能解決 = =? do k=1,35 do i=1,333 do j=1,495 read (10,*) s(i,j,k) enddo enddo enddo : ◆ From: 140.120.29.185 : → Cypresslin:Q1-> 我猜你35筆資料都在同一行,一個read會換一行 05/16 23:34 : → Cypresslin:所以新的讀取方法只讀到第一個值就跳下一行繼續讀 05/16 23:35 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.164.175.150

05/21 22:02, , 1F
k包在外面也是一樣的結果喔
05/21 22:02, 1F
文章代碼(AID): #1Hc9x3qr (Fortran)
文章代碼(AID): #1Hc9x3qr (Fortran)