当我声明一个像:
这样的字符串时character(19) :: line
do I = 1, 19, 1
if (line(I) == 'n')
编译器告诉我一个错误。如何解决这个问题? 当我这样声明时:
character line(19)
我对-if没有任何问题,但是我必须在我想要放入字符串的每个字符后按Enter键。
答案 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
...