1 arrays string fortran gfortran
当我声明一个字符串时:
character(19) :: line
do I = 1, 19, 1
if (line(I) == 'n')
Run Code Online (Sandbox Code Playgroud)
编译器告诉我一个错误。如何解决这个问题?当我这样声明时:
character line(19)
Run Code Online (Sandbox Code Playgroud)
我对 -if 没有任何问题,但是我必须在要放入字符串中的每个字符后按 Enter 键。
你们有两个完全不同的事情。
character(19) line
Run Code Online (Sandbox Code Playgroud)
声明一个长度为 19 的标量字符变量,而
character line(19)
Run Code Online (Sandbox Code Playgroud)
声明一个大小为 19 且长度为 1 的字符变量的 1 级数组。
line(i)i是引用数组元素的语法line。line仅当是 数组(您的第二个工作案例)时,这才有效。从 Fortran 2008 6.4.1 中可以看出,子字符串(即使长度为 1)也使用不同的语法进行引用。就你而言line(i:i)。
对于数组
character(19) lines(2)
Run Code Online (Sandbox Code Playgroud)
我们可以像lines(1)(1:1)while 那样访问lines(1)数组的长度为 19 的第一个元素。