2

我的一个(旧)仪器正在生成 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
4

1 回答 1

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 值。但这变得复杂了。}

于 2013-09-03T22:00:55.440 回答