fortran - Fortran 中可分配的字符变量

标签 fortran character trim

我的代码(精简为我认为与此问题相关的代码)是

PROGRAM test

IMPLICIT NONE

CHARACTER(len=37) input
CHARACTER(len=:), allocatable :: input_trim


WRITE(*,*) 'Filename?'
READ(*,*) input
ALLOCATE(character(len=LEN(TRIM(input))) :: input_trim)
input_trim=trim(input)

.
.
.

END PROGRAM test

它适用于英特尔的 Fortran 编译器,但是 gfortran 给了我几个错误,第一个在行中说
CHARACTER(len=:), allocatable :: input_trim

我不确定哪个编译器对于 Fortran 标准是“正确的”。另外我不知道如何以不同的方式实现我需要的东西?!我认为无论如何我正在做的更多是一种解决方法。我需要的是一个字符变量,它包含输入的文件名,没有后面的空格。

编辑:错误是“字符声明中的语法错误”。
gfortran --version 给了我“GNU Fortran (GCC) 4.4.7 20120313 (Red Hat 4.4.7-3)”

编辑 2:关于分配,你是对的:有了 ifort,我不需要它。并且 gfortran 在此之前崩溃了,所以也许它也不需要分配,但我目前无法对此进行测试......

最佳答案

这个

character (len=:), allocatable :: input_trim

在 Fortran 2003 中语法上肯定是正确的。你不说 gfortran 是什么错误。 raises 是,所以我无法评论为什么它不接受该行——也许您安装了旧版本的编译器。

使用最新的 Fortran 编译器(例如 Intel Fortran v14.xxx),您无需在分配字符变量之前分配它的大小,您只需编写
input_trim = trim(input)

注意
read(*,*) input_trim

不会工作。

关于fortran - Fortran 中可分配的字符变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20908053/

相关文章:

unicode - 加减减是否有Unicode字符? (+/-)

php - 按模式修剪字符串的结尾(正则表达式?)

iphone - 如何在iPhone中修剪音频文件?

fortran 中的字符串和使用它们的文件名

c - 为什么使用字符指针声明或定义字符串

fortran - gfortran 中的清零

string - 定义字母数字子类型的任何优雅方式?

php - Trim() 函数在 WordPress 中不起作用

compiler-errors - 无法使用 gfortran 打开模块文件

c - 为 C 和 Fortran 库编写 CMake Find Netcdf