在不知道长度的情况下读取CHARACTER字符串

时间:2016-11-16 09:08:05

标签: string fortran fortran77

我必须在我的Fortran 77程序中读取输入数据。它看起来如下

FILENAME PATH

temperature  ./Data

然后在Fortran代码中我按照以下步骤进行操作

CHARACTER*8 FILENAME,PATH

READ(5,'(A80)') CARDIN 

READ(5,*) FILENAME,PATH

但问题是我事先并不知道FILENAMEPATH的长度。那么如果用户不提供不完全是8的名称呢?你知道我怎么能解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

人们可以在F77中做到这一点,但这更像风格的F90。

arr.group_by(&:itself)
   .sort_by { |_k, v| -v.size }
   .take(3)
   .map(&:first)
#=> [2, 3, 1]

程序可能是这样的:

INTEGER*4 FUNCTION LengthString(String)
IMPLICIT NONE
CHARACTER* String
INTEGER*4 I

LengthString = -1 !default is -1 just because.

DO I=LEN(String), 1, -1
  IF(String(I:I) .ne. ' ') THEN
     LengthString = I
     EXIT
  ENDIF
ENDDO

RETURN
END FUNCTION LengthString

Open语句可能如下所示:

PROGRAM Main
CHARACTER*80 AA
INTEGER*4 LenAA
...
LenAA = LengthString(AA)
IF(LenAA .lt. 1) !error out
...
WRITE(*,10) LenAA, A(1:LenAA)
10 FORMAT('AA(',I4,')="',A,'"')
...

路径也是一样。

OPEN(FILE=AA(1:LenAA),...

答案 1 :(得分:0)

我不完全确定你想做什么,但你可以使用TRIM来“削减”空白区域:

      Program TEST
      CHARACTER*50 FILENAME,PATH

      READ(*,*) FILENAME,PATH
      WRITE(*,*)TRIM(FILENAME),TRIM(PATH)
      END