我的一个(旧的)仪器正在生成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发布于 2013-09-03 22:00:55
我自己找到了答案。在这里发帖帮助他人。我不得不等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时,read语句错误和程序控制将返回到第50行。如果读语句成功,那么您就不想再增加NumTextLines了。关闭该文件并重新打开它,以便从头开始。但现在你知道NumTextLines了。这样你就可以一次读一行文字,或者保存它或者跳过它。
{以上方法适用于我的大多数文件,但不是全部。另一种方法是将每一行读入字符*500变量(例如,A),然后测试字符数组第一个元素的ASCII值。但事情变得复杂了。
https://stackoverflow.com/questions/18154705
复制相似问题