[問題] 輸出格式可以利用變數而不用寫死嗎?
感謝各位大大撥空路過進來看小弟的問題
最近想要利用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
01/10 03:20, 1F
→
01/10 03:20, , 2F
01/10 03:20, 2F
→
01/10 03:21, , 3F
01/10 03:21, 3F
→
01/10 03:21, , 4F
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
01/14 00:00, 6F
Fortran 近期熱門文章
PTT數位生活區 即時熱門文章