阅读签名指数

时间:2017-04-03 17:38:29

标签: fortran gfortran exponential

我无法使用Fortran从文本文件中读取指数。

文本文件中的条目如下所示

  0.02547163e+06-0.04601176e+01 0.02500000e+02 0.00000000e+00 0.00000000e+00    3

我使用的代码如下所示

   read(iunit,'(ES20.8,ES20.8,ES20.8,ES20.8,ES20.8,I2)') dummy1, dummy2, Thermo_DB_Coeffs_LowT(iS,1:3),temp 

我得到的错误是

  

Fortran运行时错误:浮点读取期间的值不正确

我如何阅读这些值?

1 个答案:

答案 0 :(得分:0)

这就是我通常在手动编辑文件时太痛苦的事情......

CHARACTER(LEN=256)   :: Line
INTEGER, PARAMETER   :: Start = 1
INTEGER              :: Fin, Trailing_Int, I
DOUBLE, DIMENSION(6) :: Element
...

Ingest_All_Rows: DO WHILE(.TRUE.)
  READ(...) Line  ! Into a character-string
  <if we get to the end of the file, then 'EXIT Ingest_All_Rows'>

  Start =1
  Single_Row_Ingest: DO I = 1, 6
    Fin = SCAN(Line,'eE')+3  !or maybe it is 4?
    IF(I ==6) Fin = LEN_TRIM(Line)
    READ(Line(Start:Fin),*) Element(I)   !fron the string(len-string) to the double.
    Line = Line((Fin+1):)
    IF(I ==6) Trailing_Int = Element(6)
  ENDDO Single_Row_Ingest

  <Here we shove the row's 5 elements into some array, and the trailing int somewhere>
ENDDO Ingest_All_Rows

您必须填写空白,但我发现SCAN和LEN_TRIM在这些情况下非常有用