读取格式化数据-Fortran运行时错误:错误的实数

读取格式化数据-Fortran运行时错误:错误的实数,fortran,Fortran,我正在尝试使用下面的代码读取格式化文件并将其写入另一个文件。但是,在运行时会显示以下错误 $ ./conv.sac.farm < i_conv.farm # stn comp Delta Tr-time Start in record At line 54 of file Main/conv.sac.farm.f (unit = 5, file = 'stdin') Fortran runtime error: Bad real number in item

我正在尝试使用下面的代码读取格式化文件并将其写入另一个文件。但是,在运行时会显示以下错误

$ ./conv.sac.farm < i_conv.farm
  #   stn  comp      Delta    Tr-time   Start in record
At line 54 of file Main/conv.sac.farm.f (unit = 5, file = 'stdin')
Fortran runtime error: Bad real number in item 1 of list input
我在这个链接后发现了一个类似的问题


但是,如果我理解正确,所提到的更正与读取未格式化数据有关。尽管如此,考虑到我试图读取的文件已格式化,我还是按预期进行了尝试,但失败了。

如果您无法在数据文件中找到有问题的行,这里有一个小技巧:

将引发错误的读取替换为以下内容:

 read(5,'(a)')line
 read(line,*,iostat=ios) ta,du,dt,f1,f2,iph,nr,iuni
 if(ios>0)then
    write(*,*)'error reading line:',line
    stop
 endif
与声明一起

 integer ios
 character*(200) line

可能只是为了调试而这样做,然后在解决问题后恢复到原来的状态。

您想读什么?你能给我们i_conv.farm的对应行吗?使用我惊人的能力跨时间和空间进行调试,我发现输入文件的第一行包含列标题,而不是任何可以解释为实数的内容。如果你想从没有我惊人能力的小生命那里得到帮助,请按照@AlexanderVogt的建议去做。同时,在数据中寻找NaN或****或其他垃圾。顺便说一句,相关的问题很容易混淆,应该忽略。我同意@HighPerformanceMark。列标题很可能是您的问题,如果是这样的话,输入read5,*来删除标题行可以解决您的问题。但是,如果没有看到输入文件,就无法确定。
 read(5,'(a)')line
 read(line,*,iostat=ios) ta,du,dt,f1,f2,iph,nr,iuni
 if(ios>0)then
    write(*,*)'error reading line:',line
    stop
 endif
 integer ios
 character*(200) line