在fortran中读取数据时遇到EOF

时间:2012-05-12 23:49:24

标签: fortran fortran90

我正在尝试使用以下方法将初始数据文件读入我的fortran 90程序:

  

!----打开初始数据文件----
    开放(50,文件= FILE_INITIAL)

     

!----阅读状态----
    读(50,'(a3)')tmp3

尝试读取第一行时出现以下错误:

  

Fortran运行时错误:文件结束

我可以用'end ='语句来解决这个问题,但后来我无法读取以下数据行。

请注意,此代码在其他服务器上运行良好,但我尝试在其上运行的另一台服务器无效。

文件内容如下:

  

CNT $
   0.0000000E + $ 00
   105000 $
   1 1 0.6000000E + 19 0.2302255E + 06 -0.8082365E + 06 -0.1359744E + 07 -0.1569188E + 03 0.1889497E + 03 0.1642805E + 01 0.1185276E + 06 0.0000000E + 00 0.0000000E + 00 0.1317501E + 07 $
        2 1 0.6000000E + 19 0.4091322E + 06 -0.7740022E + 06 -0.1390028E + 07 -0.1547697E + 03 0.1907412E + 03 0.1055918E + 01 0.1165642E + 06 0.0000000E + 00 0.0000000E + 00 0.1320302E + 07 $
        3 1 0.6000000E + 19 0.5670843E + 06 -0.7934081E + 06 -0.1364818E + 07 -0.1560887E + 03 0.1897379E + 03 0.1457756E + 01 0.1170522E + 06 0.0000000E + 00 0.0000000E + 00 0.1214425E + 07 $

2 个答案:

答案 0 :(得分:0)

您报告的症状告诉我,您尝试打开的文件不存在,尽管您确信它确实存在。检查您是否已正确识别文件的名称和位置。查看程序的工作目录,看看是否创建了一个名为你要打开的名称的文件,大小为0 - 当你试图打开一个不存在的文件时,Fortran通常会“帮助”创建一个空文件。 / p>

如果这个猜测是错误的,请尝试使用INQUIRE例程来解决问题,也许可以尝试使用STATUS和OPEN的其他一些参数。

答案 1 :(得分:0)

如果适合记录的1D数组长于记录,则将填充后续记录,直到文件结束。我的猜测是你有一个非常长的数组来放入这些东西。例如,你需要指定eor=450在记录的末尾停止,在450你读取下一行。如果这样做,请确保首先使用其他内容填充数组,例如0或-1,以便在数组的未写入条目中没有随机数据。