我的(旧)仪器在数据之前生成带有文本顶部的文本描述的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
答案 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值。但这很复杂。}