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

|| 我是Fortran新手。我希望能够读取文本文件并将其内容保存在单个变量中。我发现了一个非常有用的Fortran教程(http://www.math.hawaii.edu/~hile/fortran/fort7.htm#read),我正在尝试遵循此处列出的示例之一。具体来说,我制作了一个名为data.txt的文本文件,其中包含以下文本:
1.23, 4.56, 7.89
11, 13, \"Sally\"
我已将此文本文件保存在当前目录中。然后,我创建了一个文件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
我正在使用GNU Fortran编译器,我认为它至少包括和包括Fortran95在内的功能。上面的代码似乎可以编译,至少使用默认设置即可。但是,当我运行生成的可执行文件时,出现以下错误消息:
At line 10 of file test.f90 (unit = 7, file = \'data.txt\')
Fortran runtime error: End of file
第10行是第READ(7,*)m,n行。您能帮我看看以上代码在做什么吗?     
已邀请:
        我可以重现您的确切错误消息和正确的输出。我在Windows上使用gfortran,并使用记事本创建数据文件。 如果用行尾字符(按Enter键)终止第二条数据行,则程序将显示正确的输出;否则,程序将显示正确的输出。如果不终止它,它将在执行期间显示错误。 基本上,运行时尝试读取一行,但是在到达行尾之前遇到文件结尾字符。     
        当我将您的示例程序与示例数据一起使用时,它就起作用了!恭喜你!输出为:
   1.2300000    
   4.5599999    
   7.8899999    
          11
          13
 Sally 
为了猜测它对您不起作用的可能原因,有时Fortran可执行文件可能会对行尾敏感,从而要求操作系统(包括数据文件的最后一行)使用正确的行终止符。相反,许多编辑器会静默转换行尾。我通常会遇到Microsoft程序编写的文件的问题。     
        对于某些编译器,重要的是在数据的最后一行之后添加新行。例如,gfortran是需要它的编译器,这很合乎逻辑。 Sun(Oracle)编译器不需要。     

要回复问题请先登录注册