在Fortran中逐行读取逗号分隔的文本文件

And*_*rew 6 file-io text fortran

我是Fortran新手.我希望能够读取文本文件并将其内容保存在单个变量中.我找到了一个非常有用的Fortran教程(http://www.math.hawaii.edu/~hile/fortran/fort7.htm#read),我试图按照那里列出的一个例子.具体来说,我使用以下文本创建了一个名为data.txt的文本文件:

1.23, 4.56, 7.89
11, 13, "Sally"
Run Code Online (Sandbox Code Playgroud)

我已将此文本文件保存在当前目录中.然后,我创建了一个文件test.f90(也保存在我当前的目录中),其中包含以下代码:

PROGRAM test
  IMPLICIT NONE

  REAL :: x, y, z
  INTEGER :: m, n
  CHARACTER first*20

  OPEN(UNIT = 7, FILE = "data.txt")
  READ(7,*) x, y, z
  READ(7,*) m, n, first

  PRINT *, x
  PRINT *, y
  PRINT *, z
  PRINT *, m
  PRINT *, n
  PRINT *, first
END PROGRAM test
Run Code Online (Sandbox Code Playgroud)

我正在使用GNU Fortran编译器,我认为它包括至少包括Fortran95在内的功能.上面的代码似乎编译好了,至少使用默认设置).但是当我运行生成的可执行文件时,我收到以下错误消息:

At line 10 of file test.f90 (unit = 7, file = 'data.txt')
Fortran runtime error: End of file
Run Code Online (Sandbox Code Playgroud)

第10行是第一行READ(7,*)m,n.你可以帮助我看看我在上面的代码中做错了什么吗?

eri*_*ous 4

我可以重现您的确切错误消息和正确的输出。我在 Windows 上使用 gfortran 和记事本来创建数据文件。
如果用行尾字符终止第二个数据行(通过按 Enter 键),程序将显示正确的输出;如果不终止它,它将在执行过程中显示错误。

基本上,运行时尝试读取一行,但在到达行尾之前遇到文件结束字符。