首页 > 代码 > 常规代码 > 正文

代码

阅读排行

仿VF扩展<n>动态生成输出格式
2014-04-25 21:46:56   来源:Fcode研讨团队   评论:0 点击:

此代码提供了标准语法下如何动态生成输出格式的方法,可避免使用 这样的 VF 扩展,提高代码可移植性,同时也简化了使用。

我们经常需要输出比较大量(且个数不确定)的数据,而不愿意换行。这时候,默认格式 * 就无法满足要求。

而如果使用输出格式,则需要指定数据格式,比如 '(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

相关热词搜索:输出格式 动态

上一篇:根据数据反获得格式符
下一篇:计算圆周率 PI 任意位数

分享到: 收藏