使用自由格式的Fortran中的非进位读取

8

我想读取文件中的一行,其中包含三个实数,但不想推进指针。所以我写了以下代码:(TXT是代表我的文件的变量,它的值为80)

read(TXT, *, ADVANCE='NO') (numbers(i),i=1,3)

然而,我收到了一个错误信息,内容如下:

"error #6568: This use of the ADVANCE, SIZE, or EOR specifier is invalid."

那么,我应该怎样编写代码才能让它正确无误呢?

谢谢。


如果您不想前进到下一行的原因是该行上还有更多数据需要读取,常见的方法是使用“(a)”格式将整行读入字符串,然后反复从字符串中读取。 - Fortranner
1个回答

9

您只能在使用显式格式时才能使用advance='no'。原因如下:advance='no'仅避免转到下一个记录(请注意,文件指针仍然会在最后读取的值之后前进);但是对于有向列表(格式*),人们不知道您的读取语句涉及多少记录(例如,三个数字可能写在四行中)。


请注意,ADVANCE 只能用于从外部单元读取数据。我曾经尝试从字符数组中读取数据,结果失败了。 - pattivacek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接