簡體   English   中英

將FORTRAN READ參數傳遞給字符串

[英]pass FORTRAN READ arguments into a string

我有一個包含要讀取的變量名稱的字符串,我想將此字符串傳遞給read函數。 這可以讓我更改讀取的變量名,而只需將向量更改為變量名即可。 例如:

PROGRAM test
implicit none

  integer :: no, age
  character(len=20) :: myname, vars

vars='no, myname, age'
read(*, '(i4,a20,i4)') vars
print*, no, myname, age 

END PROGRAM test

這可能嗎?

您可以查看“ NAMELIST” I / O,這也許可以滿足您的需求。 通常,名稱列表IO會遇到各種問題,而且人們無論如何都會訴諸於編寫自己的自定義IO例程。 但是,只要滿足您的需求,它就很容易使用。 例如


program nmltest
  implicit none
  real :: x
  integer :: y
  namelist /mynml/ x, y
  x = 4711
  y = 42
  write(*, mynml)
end program nmltest

Fortran是一種編譯語言。 READ語句很難(到不可能)在運行時從字符串列表中提取變量地址。 這就是為什么,如janneb指出,Fortran語言提供了NAMELIST這成為自Fortran 90的語言標准(一些Fortran 77的也對名稱列表的支持,但它是非標准和不兼容是編譯器之間的擔保)的一部分運營商。 它的用法如下:

...
NAMELIST /vars/ no, age, myname
...
READ(*, NML=vars)
...

輸入應該是這樣的:

! Input can contain comments starting with exclamation marks

! And blank lines too
&vars
 no = 12,
 myname = 'sometext'/

但是, NAMELIST無法使用格式化的輸入/輸出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM