Fortran:初始化期间自动确定字符长度

标签 fortran character

Fortran中,在声明期间使用初始值设定项时是否可以自动扣除字符(字符串)的长度?我想要这样的东西(不按原样工作)

  character(*) :: a = 'John Doe'
  character(:) :: a = 'John Doe'

示例代码

program char
  implicit none

  character(8) :: a = 'John Doe' !<-automatically?

  write(*,*) a
  write(*,*) len(a)

end program char

一种正确的方法是使用

  character(8) :: a = 'John Doe'

通过简单地计算字符,但这很容易出错。或者,我可以使字符比必要的长度更长并使用 trim()

program char
  implicit none

  character(100) :: a = 'John Doe'

  write(*,*) trim(a)
  write(*,*) len(trim(a))

end program char

但是8可以自动确定吗?我知道这是一个学术问题,但我仍然想知道......

最佳答案

除了@AlexanderVogt使用参数的解决方案之外,您还可以在Fortran 2003中使用自动分配,如下所示:

character(len=:), allocatable :: name

然后像这样初始化

name = 'John Doe'

并以同样的方式重置

name = 'John Doe Jr'

关于Fortran:初始化期间自动确定字符长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22097682/

相关文章:

optimization - 为什么打开 gfortran 编译器优化后 matmul 变慢?

fortran - Fortran 中的循环变量是否已保存?

php - 动态计算字段中的字符

r - 字符串分解

arrays - Fortran 中的函数指针数组

cuda - Runge-Kutta 4 与 CUDA Fortran

c++ - 在 C++ 中,如何区分整数和字符?

linux - 计算可打印字符

c++ - 如何在C++中从控制台读取字符?

fortran - 如何在 Fortran 90/95 中使用 Fortran 77 子程序?