看板 Fortran 關於我們 聯絡資訊
目前寫程式中,為了將輸出的數據做規則排列 所以有將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
charlesdc:你先把X印出來看看是否是你要的 這樣看起來是沒問題 03/13 18:39
ybchen:這我有確定 x輸出是正確的 03/13 18:46
※ 編輯: ybchen 來自: 140.112.33.151 (03/13 18:57)
charlesdc:試試 write(x(1:2),'(I2)')N_Material-2 03/13 19:01
charlesdc:記得X要改成 x="??I5,ES17.10E2" 03/13 19:02
charlesdc:在不行我就不知了...這方法是可行的但錯在哪我不知道 03/13 19:04
charlesdc:把X換掉然後寫嚴謹點看看write(*,FMT=變數) x是空格 03/13 19:08
charlesdc:Write(51,'(x)')這邊表示錯了 03/13 19:16
charlesdc:我也搞錯了. "()"這個要搞到字串裡x="(??I5,ES17.10E2)" 03/13 19:22
jsb:Write ( x,'(I2,A12)' ) N_Material-2, '(I5,ES17.10E2)' 03/14 01:34
jsb:Write (51,x) thick(:,j), R*100 03/14 01:35
ybchen:感謝各位 我找到方法了 03/15 15:12
ybchen:Write(h,'(A1,I2,A13)') '(',N_Material-2,'I5,ES17.10E2)' 03/15 15:15
ybchen:Write(51,h) thick(:,j), R*100 03/15 15:15
jsb: 我就是這個意思啦. . . 不小心寫錯了真抱歉。 03/16 00:39