[問題] Write格式可浮動化嗎

看板Fortran作者 (惡魔也會哭)時間15年前 (2009/03/13 17:31), 編輯推噓2(2012)
留言14則, 3人參與, 最新討論串1/1
目前寫程式中,為了將輸出的數據做規則排列 所以有將WRITE的格式做設定 但是有其中一組輸出,會因為初始輸入的計算範圍,使得數據組數有變動 所以有利用字串的方式來記錄調整格式的範圍 其中主要的程式碼如下 ................. Write ( x,'(I2,A12)' ) N_Material-2, 'I5,ES17.10E2' ................. Write(51,'(x)') thick(:,j), R*100 ................. 如上所寫的,我已經將x設為字串,利用write將他寫成格式化輸出的寫法 其中,前幾項都是整數,但是會隨著初始輸入有不同組數 所以 N_Material-2 就是需要列出的組數 例如 N_Material-2 = 3 ,那 x = 3I5,ES17.10E2 下面那一排,即是利用x的格式輸出需要的數據 雖然compile可以過,但是執行程式後,就發生 forrt1: serve <60>: infinite format loop unit 51, file D:\xxxxxxxx 這樣的錯誤訊息 不過如果是 Write(51,'(3I5,ES17.10E2)') thick(:,j), R*100 這樣就可以跑完 也就是直接把format寫完是可正常執行,但若設定成字串組就會錯誤 剛剛試了一下 發現真的不行 x是恰好為format指令參數的其中一個 換成h,就連compile都過不去,也就是說似乎一定要直接寫format指令 請問有什麼寫法可以克服這個問題嗎? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.33.151

03/13 18:39, , 1F
你先把X印出來看看是否是你要的 這樣看起來是沒問題
03/13 18:39, 1F

03/13 18:46, , 2F
這我有確定 x輸出是正確的
03/13 18:46, 2F
※ 編輯: ybchen 來自: 140.112.33.151 (03/13 18:57)

03/13 19:01, , 3F
試試 write(x(1:2),'(I2)')N_Material-2
03/13 19:01, 3F

03/13 19:02, , 4F
記得X要改成 x="??I5,ES17.10E2"
03/13 19:02, 4F

03/13 19:04, , 5F
在不行我就不知了...這方法是可行的但錯在哪我不知道
03/13 19:04, 5F

03/13 19:08, , 6F
把X換掉然後寫嚴謹點看看write(*,FMT=變數) x是空格
03/13 19:08, 6F

03/13 19:16, , 7F
Write(51,'(x)')這邊表示錯了
03/13 19:16, 7F

03/13 19:22, , 8F
我也搞錯了. "()"這個要搞到字串裡x="(??I5,ES17.10E2)"
03/13 19:22, 8F

03/14 01:34, , 9F
Write ( x,'(I2,A12)' ) N_Material-2, '(I5,ES17.10E2)'
03/14 01:34, 9F

03/14 01:35, , 10F
Write (51,x) thick(:,j), R*100
03/14 01:35, 10F

03/15 15:12, , 11F
感謝各位 我找到方法了
03/15 15:12, 11F

03/15 15:15, , 12F
Write(h,'(A1,I2,A13)') '(',N_Material-2,'I5,ES17.10E2)'
03/15 15:15, 12F

03/15 15:15, , 13F
Write(51,h) thick(:,j), R*100
03/15 15:15, 13F

03/16 00:39, , 14F
我就是這個意思啦. . . 不小心寫錯了真抱歉。
03/16 00:39, 14F
文章代碼(AID): #19kYVrgI (Fortran)
文章代碼(AID): #19kYVrgI (Fortran)