0

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

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

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

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

Fortran 运行时错误:文件结束

我可以用 'end=' 语句纠正这个问题,但是我无法读取以下数据行。

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

文件内容如下:

CNT $
0.0000000E+00 $
105000 $
1 1 0.60000EE+19 0.230255E+06 -0.8082365E+06 -0.1359744e+07 -0.1569188E 0.0000000E+00 0.1317501E+07 $
2 1 0.60000EE+19 0.409132EE+06 -0.7740022E+06 -0.1390028E+07 -0.1547697E+03 0.1907412E+03 0.1907412E+03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 0.1018EE 0.0000000E+00 0.1320302E+07 $
3 1 0.60000E+19 0.5670843E+06 -0.7934081E+06 -0.1364818E+07 -0.156087E 0.0000000E+00 0.1214425E+07$

4

2 回答 2

0

您报告的症状向我表明您尝试打开的文件不存在,尽管您确信它确实存在。检查您的文件名称和位置是否正确。查看程序的工作目录以查看您尝试打开的名称是否已创建为大小为 0 的文件——当您尝试打开不存在的文件时,Fortran 通常会“有用地”创建一个空文件。

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

于 2012-05-13T09:10:33.147 回答
0

如果应该适合记录的一维数组比记录长,它将被后续记录填充,直到文件末尾。我的猜测是你有一个非常长的数组来放入这些东西。例如,你需要指定eor=450在记录的末尾停止,并在 450 处读取下一行。如果您这样做,请务必先用其他内容填充数组,例如 0 或 -1,以便在数组的未写入条目中没有随机数据。

于 2016-07-07T22:19:42.153 回答