数组构造函数中的不同字符长度 (3/4),如何 trim 字符串 - Fortran
Different CHARACTER lengths (3/4) in array constructor, how to trim strings - fortran
根据对类似问题的回答,我已经声明了此处指示的字符 gfortran does not allow character arrays with varying component lengths 。但是我想使用 trim 函数,因为我需要添加空格以手动填充名称,然后这些变量将用于代码的另一部分。我可以在创建数组的同时trim吗?
Error: Different CHARACTER lengths (3/4) in array constructor at (1)
如果我添加随机字符使它们的长度相同,它可以工作,但由于明显的原因我不能这样做。我用 gfortran 和 mpif90 编译了相同的结果
use mod_maxdims , only : maxstr
integer, parameter :: nvars_ncep = 12
character(len=maxstr), parameter, dimension(nvars_ncep) :: vars_ncep = &
(/ 'air' & ! Air temperature [ K]
, 'pres' & ! Pressure [ Pa]
, 'rhum' & ! Relative humidity [ %]
, 'uwnd' & ! Zonal wind [ m/s]
, 'vwnd' & ! Zonal wind [ m/s]
, 'pres' & ! Pressure [ Pa]
, 'dlwrf' & ! Downward long wave radiation [ W/m2]
, 'nbdsf' & ! Near-IR beam radiation [ W/m2]
, 'nddsf' & ! Near-IR diffuse radiation [ W/m2]
, 'vbdsf' & ! Visible beam radiation [ W/m2]
, 'vddsf' & ! Visible beam radiation [ W/m2]
, 'prate' /) ! Precipitation rate [kg/m2/s]
gfortran 阻止您编写非标准代码;这是禁止它的语言标准,而不是实现。
如果您按照上述方式初始化字符数组,则所有条目的长度必须相同。在你的情况下,你必须用足够的空间填充每个较短的条目,使它们都一样长。
另一种方法是在程序开始执行时插入条目。如果你写类似 vars_ncep(1) = 'air'
的东西,那么额外的字符将被设置为空格,编译器会为你处理。但是,这意味着您的数组不能是 parameter
.
根据对类似问题的回答,我已经声明了此处指示的字符 gfortran does not allow character arrays with varying component lengths 。但是我想使用 trim 函数,因为我需要添加空格以手动填充名称,然后这些变量将用于代码的另一部分。我可以在创建数组的同时trim吗?
Error: Different CHARACTER lengths (3/4) in array constructor at (1)
如果我添加随机字符使它们的长度相同,它可以工作,但由于明显的原因我不能这样做。我用 gfortran 和 mpif90 编译了相同的结果
use mod_maxdims , only : maxstr
integer, parameter :: nvars_ncep = 12
character(len=maxstr), parameter, dimension(nvars_ncep) :: vars_ncep = &
(/ 'air' & ! Air temperature [ K]
, 'pres' & ! Pressure [ Pa]
, 'rhum' & ! Relative humidity [ %]
, 'uwnd' & ! Zonal wind [ m/s]
, 'vwnd' & ! Zonal wind [ m/s]
, 'pres' & ! Pressure [ Pa]
, 'dlwrf' & ! Downward long wave radiation [ W/m2]
, 'nbdsf' & ! Near-IR beam radiation [ W/m2]
, 'nddsf' & ! Near-IR diffuse radiation [ W/m2]
, 'vbdsf' & ! Visible beam radiation [ W/m2]
, 'vddsf' & ! Visible beam radiation [ W/m2]
, 'prate' /) ! Precipitation rate [kg/m2/s]
gfortran 阻止您编写非标准代码;这是禁止它的语言标准,而不是实现。
如果您按照上述方式初始化字符数组,则所有条目的长度必须相同。在你的情况下,你必须用足够的空间填充每个较短的条目,使它们都一样长。
另一种方法是在程序开始执行时插入条目。如果你写类似 vars_ncep(1) = 'air'
的东西,那么额外的字符将被设置为空格,编译器会为你处理。但是,这意味着您的数组不能是 parameter
.