strlen实际上在做什么?

时间:2016-09-14 16:22:36

标签: fortran

这是子程序strlen

      subroutine strlen(string,i1,i2)
      character string*(*)
      do 10 i=len(string),1,-1
        if(string(i:i).ne.' ')then
          i2=i
          goto 11
        endif
   10   continue
   11 do 20 i=1,len(string)
        if(string(i:i).ne.' ')then
          i1=i
          return
        endif
   20   continue
      return
      end

主要

 if(nfil.lt.0)then
    call strlen(cpar,i1,i2)
    open(unit=10,file=cpar(i1:i2),status='old')

如果声明了cpar       字符cpar *(*)

是否存在关于要正确打开的cpar名称的任何规则或限制?

我的hx263on.sens(cpar)无法读取。为什么?

1 个答案:

答案 0 :(得分:1)

该函数只查找不是空格的第一个和最后一个字符。这些内容以i1i2的形式返回。 cpar(i1:i2)应与Fortran 90中的adjustl(trim(cpar))相同。

这不是必要的。无论如何,Fortran修剪传递给打开的文件名。不支持以空格结尾的文件名。

如果无法打开文件,则可能不存在或包含操作系统不喜欢的某些特殊字符。或者它实际上包含的东西比你想象的要多。也许变量太短或类似的东西。通过打印来验证cparcpar(i1:i2)的值。