[問題] 輸出格式可以利用變數而不用寫死嗎?

看板Fortran作者 (向陽花)時間7年前 (2017/01/09 19:01), 7年前編輯推噓0(006)
留言6則, 2人參與, 最新討論串1/1
感謝各位大大撥空路過進來看小弟的問題 最近想要利用fortran輸出一些資料但在格式遇到些問題 想要把資料寫入檔案的時候,發現format好像只能寫固定的格式 EX/ format(f10.3,1x,f10.3,1x,f8.3) 而沒辦法利用變數去進行取代的更改輸出格式 以下為想利用變數的值 type_a = 'f10.3' type_b = 'f10.3' type_c = 'f8.3' EX/ format(type_a,1x,type_b,1x,type_c) 因為小弟寫的這支code需要透過使用者輸入 來進行輸出格式的確定 例如要輸出到小數點第幾位 但如果要更改輸出的格式又好像只能透過更改程式碼,才能辦到 但使用者又不懂fortran,這樣卻是會造成使用者很大的困擾 不知道是否有沒有什麼方式不透過更改程式碼達到輸出格式更改的目的呢?! 小弟學藝不精,想請版上各位大神,好心救救小弟 先在這邊感謝大家^ ^ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 163.24.118.247 ※ 文章網址: https://www.ptt.cc/bbs/Fortran/M.1483959666.A.628.html ※ 編輯: max533 (163.24.118.247), 01/09/2017 19:03:31

01/10 03:20, , 1F
因為format 本身只是一個字串
01/10 03:20, 1F

01/10 03:20, , 2F
通常的作法是改變format 字串的內容
01/10 03:20, 2F

01/10 03:21, , 3F
例如: write(n,fmt) xxxxxx
01/10 03:21, 3F

01/10 03:21, , 4F
然後用程式本身去控制fmt 字串內容
01/10 03:21, 4F
我大概了解N大的意思,但我有個部分搞不太懂, 就是程式中,使用者可以輸入的控制的部分,是所有的位數和小數點輸出到第幾位 我把字串的格式改成變數fmt的方式來控制 但fmt的字串長度只能自己先設定好嗎?! 還是有類似可變矩陣的可變字串,字串長度不固定的方式可以使用呢?! EX/ character :: fmt*18 fmt = "'(f10.3,f10.3,i2)'" fmt = "'(f9.3,f9.3,i2)'" write(14,fmt) xyz1,xyz2,ok3 若一開始就宣告,這樣第二種fmt後面可能就有空格,好像會影響後續的輸出 但又沒辦法write(14,trim(fmt))xyz1,xyz2,ok3 還是有其他方法能解決此問題呢? ※ 編輯: max533 (163.24.118.247), 01/10/2017 09:19:32

01/10 12:44, , 5F
變數的空格應該不影響 你試試就知道
01/10 12:44, 5F
的確空格是不影響的,問題出在多了2個單引號 只要改成 fmt="(f10.3,f10.3,i2)" 即可 感謝n大 ^ ^ ※ 編輯: max533 (163.24.118.247), 01/10/2017 15:48:18

01/14 00:00, , 6F
Variable Expressions in Formats
01/14 00:00, 6F
文章代碼(AID): #1OSsroOe (Fortran)
文章代碼(AID): #1OSsroOe (Fortran)