为什么Fortran不会遍历字符串

时间:2015-05-28 22:32:22

标签: arrays string fortran gfortran

当我声明一个像:

这样的字符串时
character(19) :: line 
do I = 1, 19, 1 
if (line(I) == 'n')

编译器告诉我一个错误。如何解决这个问题? 当我这样声明时:

character line(19)

我对-if没有任何问题,但是我必须在我想要放入字符串的每个字符后按Enter键。

2 个答案:

答案 0 :(得分:4)

你有两件完全不同的东西。

q

声明一个长度为19的标量字符变量,而

s

声明一个长度为1的字符变量大小为19的rank-1数组。

character(19) line 是引用数组character line(19) 的元素line(i)的语法。仅当i是数组(您的第二个工作情况)时才有效。从Fortran 2008 6.4.1可以看出,使用不同的语法引用了一个子串,即使长度为1。在您的情况下line

对于数组

line

我们可以访问line(i:i),而character(19) lines(2) 将是数组的长度为19的第一个元素。

答案 1 :(得分:1)

character(10) :: line
do i =1, 10
if( line(i:i) == 'n') then
...