如何将.csv中的混合数据读入Fortran,如字符串,整数和实数

时间:2017-02-07 19:08:41

标签: csv fortran fortran90

我有一个子程序,用于读取CSV并最终将其保存到数据数组中。但是,我无法正确读取字符串值。我可以很好地得到实数和整数值,但每次都是空的字符串。数据文件始终具有相同的格式(F10.6,1x,I3,1x,A64),行数未知。我的输出只是浮点值,后跟整数,后跟空格。我错过了什么?

我的数据格式为:

  1.100000,100,TEST STRING                                                     
  1.106667,100,TEST STRING                                                     
  1.106667, 48,TEST STRING                                                     
  1.106667, 14,TEST STRING                                                     

我的代码是:

      SUBROUTINE GET_TRIP_DATA(FILENAME, NUMROWS)

      CHARACTER(len=256) :: FILENAME
      INTEGER NUMROWS, IOSTATUS, I
      REAL TIMEVAL
      INTEGER PERCENTVAL
      CHARACTER TEXTSTR

      NUMROWS = 0
      OPEN(5,FILE=FILENAME)
      DO
        READ(5, *, IOSTAT=IOSTATUS) DUMMYV
        IF(IOSTATUS .NE. 0) THEN
            EXIT
        ELSE
            NUMROWS = NUMROWS + 1
        ENDIF
      ENDDO

      WRITE(ITERM,*) 'NUMROWS IS: ', NUMROWS

      REWIND(5)

      DO I=1,NUMROWS
       READ(5, 901, IOSTAT=IOSTATUS) TIMEVAL, PERCENTVAL, TEXTSTR
       WRITE(ITERM,901) TIMEVAL, PERCENTVAL, TRIM(ADJUSTL(TEXTSTR))
      ENDDO

      CLOSE(5)

      RETURN
901   FORMAT (F10.6,1x,I3,1x,A64)      
      ENDSUBROUTINE

1 个答案:

答案 0 :(得分:1)

您的角色TEXTSTR被声明为单个角色。所以你只读了一个字符,然后打印出来。

也不要使用小于10的单位数字来打开文件。特别是不要使用5号和6号机组。它们几乎总是为了特殊目的而预先连接。