用可变长度的字符串初始化fortran字符数组



我有一个代码,在这里我设置了一个字符数组,其中有一组默认的"选项";,我可能希望也可能不希望在代码执行期间覆盖它。如果我用所有相同长度的字符串初始化数组(更短或等于最大可能长度5(,那么代码就可以工作:

PROGRAM test
character(len=5) :: s(3)=["a","b","c"]
s(1)="12345678"
print *,s
END PROGRAM test

输出

12345b    c    

但是如果字符串是可变长度的。

character(len=5) :: s(3)=["a","bb","c"]

然后我得到一个编译错误:

Error: Different CHARACTER lengths (1/2) in array constructor at (1)

我可以通过填充空格来让所有字符串都相等,就像这个一样

character(len=5) :: s(3)=["a ","bb","c "]

但对于我的实际例子来说,这有点乏味,因为我有一些很长的字符串,所以在大声计数时需要按下空格键。。。有没有一种方法可以初始化具有可变长度变量的字符数组,即某种自动填充?

您需要在数组构造函数中手动指定类型规范,如

character(len=5) :: s(3) = [character(len=5) :: "a", "bb", "c"]

这将把数组中的每个元素转换为相同的类型character(len=5),这样数组构造函数是合法的。

最新更新