Fortran格式化输出疑问:如何适配动态数组长度无需手动改FORMAT?
Fortran动态数组输出格式的解决方案
不用每次修改n都手动改FORMAT语句,有几个实用的处理方式:
隐含重复格式(最简便)
Fortran允许格式单元不指定重复次数,会自动循环处理所有输出项。直接这么写就行:write(*, '(I2,2x)') (A(k), k=1,n)这样
(I2,2x)会重复执行n次,完美匹配数组长度,完全不用管n的具体数值。动态生成格式字符串(Fortran 90+支持)
先把格式字符串用变量拼出来,再传给write语句:character(len=:), allocatable :: fmt write(fmt, '(a,i0,a)') '(', n, '(I2,2x))' write(*, fmt) (A(k), k=1,n)这里
i0会自动把n的数值转成字符串,动态生成对应次数的格式,适合需要精确控制格式结构的场景。默认星号格式(最省事)
直接省略FORMAT语句,用编译器默认格式输出:write(*,*) (A(k), k=1,n)缺点是输出排版是编译器默认的,不一定符合
I2,2x的要求,但胜在完全不用操心格式匹配问题。
内容的提问来源于stack exchange,提问作者geom
相关产品推荐
相关产品推荐

