У меня есть подпрограмма, которая должна читаться в CSV и в конечном итоге сохранять ее в массив данных. Однако я не могу заставить его правильно читать строковое значение. Я могу получить реальные и целые значения просто отлично, но строка приходит в пустое каждый раз. Файл данных всегда имеет тот же точный формат (F10.6,1x, I3,1x, A64) с неизвестным количеством строк. Мой вывод - это просто значение float, за которым следует целое число, за которым следует пробел. Что мне не хватает?Как читать в смешанных данных из .csv в Fortran как string, integer и real
Мои данные в формате:
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
Каков выходной результат? Можете ли вы показать точную форму? –