首页 >

仿VF扩展<n>动态生成输出格式

作者:fcode  日期:04-25
来源:Fcode研讨团队
我们经常需要输出比较大量(且个数不确定)的数据,而不愿意换行。这时候,默认格式 * 就无法满足要求。

而如果使用输出格式,则需要指定数据格式,比如 '(100F5.1)',当 100 个数不确定时,就比较难办。

Visual Fortran 扩展了尖括号语法,比如 n = 100 ,上面的例子可写为 '(<n>F5.1)',但这毕竟不是标准语法。

此段代码提供了一个标准语法下的,对尖括号的模仿。

但依然有限定,比如只能有一个可变量(改成多个也可以,但需要额外的书写)

Module N_Fmt_Mod
  Implicit None  
contains
  Character( Len = 256 ) Function N_Fmt( c , n )
    !// N_Fmt by www.fcode.cn
    Character( Len = * ) , Intent( IN ) :: c
    Integer , Intent( IN ) :: n
    integer :: i , j
    character( len = 16 ) :: cn
    i = index( c , '<' )
    j = index( c , '>' )
    write( cn , '(g0)' ) n
    N_Fmt = c(:i-1) // Trim(adjustL(cn)) // c(j+1:)
  End Function N_Fmt
End Module N_Fmt_Mod
  
Program www_fcode_cn
  use N_Fmt_Mod
  implicit none
  integer , parameter :: N = 10
  real :: a( N ) = 24.
  Write( * , "(<n>f5.1)" ) a !// only for Visual Fortran
  Write( * , N_Fmt("(<n>f5.1)",N) ) a !// for all compiler
End Program www_fcode_cn
常规|工具|专业|读物|
代码|教学|算法|
首页 >
FortranCoder手机版-导航