Fortran77自动确定数据文件顶部有多少行文本

时间:2013-08-09 19:59:37

标签: text fortran77

我的(旧)仪器在数据之前生成带有文本顶部的文本描述的ASCII数据文件。但是描述性文本的行数因运行而异。如何让Fortran77自动确定? 这是一个示例数据文件,位于该行下方。

Line of explanatory text.

Notice the possible blank lines.
More text.
The number of lines is NOT the same every time.

1.0, 2.0
2.0, 4.0
3.0, 6.0
4.0, 8.0

1 个答案:

答案 0 :(得分:0)

[我自己找到了答案。张贴在这里帮助他人。等待8个小时来回答我自己的问题是非常烦人的,但我理解为什么规则存在。愚蠢的装扮!]

粗略但有效的解决方案,如果您的文字从不以数字开头(这是我的情况):

假设输入文件名为Data.dat。

    integer NumTextLines
    real X
    open(8,"Data.dat")
    NumTextLines=-1
50  NumTextLines=NumTextLines+1
    read(8,*,err=50) X
    close(8)
    open(8,"Data.dat")

每次程序尝试将文本行中的单词读入实数变量X时,读取语句错误和程序控制将返回到第50行。如果读取语句成功,则不希望增加NumTextLines了。关闭文件并重新打开,从头开始重新开始。但是现在你知道了NumTextLines。因此,您可以一次读取一行文本,然后保存或跳过它。

{上述方法适用于我的大多数文件,但不是全部。另一种方法是将每一行读入字符* 500变量(例如,A),然后测试字符数组的第一个元素的ASCII值。但这很复杂。}