2014-03-25 39 views
2

我運行一個Fortran 90的程序,具有α-值的陣列,其中i = 1的Fortran輸出到40.我想要輸出的陣列分成5行的8用下面的代碼:兩行上,而不是一個

write(4,*) "alpha " 
write(4,*)alpha(1), alpha(2), alpha(3), alpha(4), alpha(5), alpha(6), alpha(7), alpha(8) 
write(4,*)alpha(9), alpha(10), alpha(11), alpha(12), alpha(13), alpha(14), alpha(15), alpha(16) 
write(4,*)alpha(17), alpha(18), alpha(19), alpha(20), alpha(21), alpha(22), alpha(23), alpha(24) 
write(4,*)alpha(25), alpha(26), alpha(27), alpha(28), alpha(29), alpha(30), alpha(31), alpha(32) 
write(4,*)alpha(33), alpha(34), alpha(35), alpha(36), alpha(37), alpha(38), alpha(39), alpha(40) 

其中4是所需的輸出文件。但是當我打開輸出時,有10行而不是5個,每個有5個值,然後3個值交替。任何想法我能做些什麼來避免這種情況?

謝謝。

回答

4

使用格式化的IO。列表引導的IO(即,帶有「*」)被設計爲很容易但沒有完全指定。不同的編譯器會產生不同的輸出。試一下如:

write (4, '(8(2X, ES14.6))') alpha (1:8) 

或者使用一個循環:

do i=1, 33, 8 
    write (4, '(8(2X, ES14.6))') alpha (i:i+7) 
end do 
4

寫(4 「(8(1×,F0.4))」)α-

打印的40號超過5行,因爲在Fortran「格式轉換」中,格式在達到最後時會重新使用,並在新行上打印更多數據。

該網站http://www.obliquity.com/computer/fortran/format.html說,這個有關格式回覆:

「如果在數據傳輸列表較少的項目比有數據描述符,則所有未使用的描述符會被忽略。然而,如果有更多的數據傳輸列表中的項目比有數據描述符的項目強制返回,在這種情況下,FORTRAN 77前進到下一條記錄並重新掃描格式,從最右邊的括號開始,包括任何重複計數指示符。然後重新使用這部分格式,如果在FORMAT語句中沒有內部括號,那麼整個格式將被重用。

相關問題