我必须在我的Fortran 77程序中读取输入数据。它看起来如下
FILENAME PATH
temperature ./Data
然后在Fortran代码中我按照以下步骤进行操作
CHARACTER*8 FILENAME,PATH
READ(5,'(A80)') CARDIN
READ(5,*) FILENAME,PATH
但问题是我事先并不知道FILENAME
和PATH
的长度。那么如果用户不提供不完全是8的名称呢?你知道我怎么能解决这个问题吗?
答案 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