If statement Fortran77:检查字符数组索引是否为空

If statement Fortran77:检查字符数组索引是否为空,if-statement,fortran,fortran77,character-arrays,If Statement,Fortran,Fortran77,Character Arrays,我有一个字符数组名称(10)*6。我正在循环I=1:10并写入名称(I)的值。 问题是名称周期性地丢失值,如果特定的名称(I)是这种情况,我想跳过它 我试着做这样的事情 IF(names(I) .NE. 0) THEN WRITE(4,202) names(I) ENDIF 我收到一个错误,告诉我我无法将字符与0进行比较。这是有道理的。 我应该拿它和什么比较?像这样的空位?在为其声明空格后,如何检查其是否未定义或为空 IF(mychar(I) .NE. '

我有一个字符数组名称(10)*6。我正在循环I=1:10并写入名称(I)的值。

问题是名称周期性地丢失值,如果特定的名称(I)是这种情况,我想跳过它

我试着做这样的事情

   IF(names(I) .NE. 0) THEN 
        WRITE(4,202) names(I)   
    ENDIF
我收到一个错误,告诉我我无法将字符与0进行比较。这是有道理的。 我应该拿它和什么比较?像这样的空位?在为其声明空格后,如何检查其是否未定义或为空

IF(mychar(I) .NE. '      ') THEN 
     WRITE(4,202) names(I)  
ENDIF
目标是仅在实际存在某些内容时才发出write命令。:-)


编辑说明:我可能无法初始化此数组。我想知道未定义的声明索引的默认值是什么,或者是否有一个函数来检查字符数组索引是否为空。

您可能对内在的
len\u trim
函数感兴趣。一如既往地阅读Fortran手册。

为什么不在使用前将其初始化为空字符串?然后,你可以做你建议的检查……在问题中更详细地描述情况。显示您真正想要实现的目标,而不仅仅是您错误地认为正确的方法。fortran字符串是空白填充的,因此
LEN_TRIM(string).eq.0
string.eq.'
string.eq.
都是等效的。(如果字符串从未初始化,则所有内容都可能为false。)对“编辑注释”的响应。“未定义”我想你的意思是“未初始化”。Fortran不为未初始化的变量提供默认值。您应该在比较变量之前初始化它。但是,当您使用较短的字符串指定字符串时,剩余的尾随字符将用空格填充。也许这就是你要问的。我认为这将是一个有效的方法来检查它是否已经被定义,我将尝试一下。谢谢你的回复。