我想评估变量myline的第三个字母是否是'C'。
我试试看:
program main
implicit none
type line
integer :: count = 5
character(len=48) :: list = 'ABCDE'
end type
type(line) :: myline
character(len=1) :: letter = 'C'
write(*,*) myline%count, myline%list
if(myline%list(3) == letter) then
write(*,*) 'TRUE'
else
write(*,*) 'FALSE'
end if
end program但我明白:
$ /usr/local/bin/gfortran8 -mcmodel=medium -fcheck=all -Wl,-rpath=/usr/local/lib/gcc8 -o test test.f90
test.f90:15:15:
if(myline%list(3) == letter) then
1
Error: Syntax error in IF-expression at (1)
test.f90:17:5:
else
1
Error: Unexpected ELSE statement at (1)
test.f90:19:4:
end if
1
Error: Expecting END PROGRAM statement at (1)我正在使用gfortran (gcc8)和Fortran 90标准。
发布于 2019-09-12 00:33:33
在Fortran中,字符子字符串引用总是需要一个开始和结束位置。所以你想要的是myline%list(3:3)。
您可以省略结束位置(保留冒号),例如(3:),这意味着字符串的其余部分。同样,您可以省略起始位置,这意味着从第一个字符(:3)。
作为一种建议,letter最好使用parameter属性声明,因为它是一个常量,但是您拥有的内容将起作用。
https://stackoverflow.com/questions/57898173
复制相似问题