作者max533 (向阳花)
看板Fortran
标题[问题] 输出格式可以利用变数而不用写死吗?
时间Mon Jan 9 19:01:04 2017
感谢各位大大拨空路过进来看小弟的问题
最近想要利用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://webptt.com/cn.aspx?n=bbs/Fortran/M.1483959666.A.628.html
※ 编辑: max533 (163.24.118.247), 01/09/2017 19:03:31
1F:→ noonee: 因为format 本身只是一个字串 01/10 03:20
2F:→ noonee: 通常的作法是改变format 字串的内容 01/10 03:20
3F:→ noonee: 例如: write(n,fmt) xxxxxx 01/10 03:21
4F:→ noonee: 然後用程式本身去控制fmt 字串内容 01/10 03:21
我大概了解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
5F:→ noonee: 变数的空格应该不影响 你试试就知道 01/10 12:44
的确空格是不影响的,问题出在多了2个单引号
只要改成 fmt="(f10.3,f10.3,i2)" 即可
感谢n大 ^ ^
※ 编辑: max533 (163.24.118.247), 01/10/2017 15:48:18
6F:→ onezillion: Variable Expressions in Formats 01/14 00:00