Fortran格式字符串用变量并实现值的并排输出
解决Fortran数组元素并排输出的问题
你可以通过以下几种方式实现数组元素在同一行输出:
方法1:使用重复格式符
Fortran的格式字符串支持用*(格式符)来重复应用该格式,直到所有输出项处理完毕。修改你的write语句即可:
program test_fmt implicit none integer i, nvar real ::j(2)=(/1.234,5.678/) nvar=2 write(*,'(*(f10.5))')(j(i),i=1,nvar) ! 更简洁的写法:直接输出整个数组,无需循环 ! write(*,'(*(f10.5))') j end
这种写法兼容GNU Fortran 4.8.5,会把所有数组元素按指定格式并排输出在同一行。
方法2:动态生成格式字符串
如果需要更灵活地根据变量nvar控制格式,可以先构造包含对应数量格式符的格式字符串:
program test_fmt implicit none integer i, nvar real ::j(2)=(/1.234,5.678/) character(len=20) fmt nvar=2 ! 动态生成格式字符串,比如nvar=2时生成'(2f10.5)' write(fmt, '(a,i0,a)') '(', nvar, 'f10.5)' write(*, fmt) j end
原代码换行的原因
你原来的格式(f10.5)每次仅处理一个输出项,当格式处理完所有指定的格式符后,Fortran会自动换行,所以每个数组元素单独占一行。而上述方法通过重复格式或生成包含足够格式符的字符串,让所有元素在一次格式处理中完成输出,从而实现并排显示。
内容的提问来源于stack exchange,提问作者user86927
相关产品推荐
相关产品推荐

