2014-06-24 8 views
6

Ich möchte eine Zeile in einer Datei lesen, die drei reelle Zahlen enthält, ohne den Zeiger weiter. Also schrieb ich: (TXT ist die Variable meine Datei darstellt, die einen Wert von 80 hat)Nicht fortschreitende lesen in Fortran mit freiem Format

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

aber ich bekam eine Fehlermeldung sagend:

„Fehler # 6568: Diese Verwendung des ADVANCE, SIZE oder EOR specifier ist ungültig. "

Also wie soll ich es schreiben, um es richtig zu machen?

Danke.

+0

Wenn der Grund, warum Sie nicht zur nächsten Zeile wechseln möchten, darin besteht, dass mehr Daten in der Zeile zu lesen sind, ist es üblich, die ganze Zeile in einer Zeichenfolge im Format "(a)" zu lesen dann wiederholt aus der Zeichenfolge lesen. – Fortranner

Antwort

8

Sie können advance = 'no' nur mit einem expliziten Format verwenden. Der Grund ist der folgende: advance = 'no' verhindert nur, dass zum nächsten Datensatz gegangen wird (beachten Sie, dass der Dateizeiger trotzdem weiterfährt, direkt nach dem letzten gelesenen Wert); aber mit einer gerichteten Liste (Format *) weiß man nicht, wie viele Datensätze von Ihrer Leseanweisung betroffen sind (die drei Zahlen können beispielsweise in vier Zeilen geschrieben sein).

+0

Beachten Sie, dass "ADVANCE" nur zum Lesen von einer externen Einheit verwendet werden kann. Ich habe mich verbrannt, als ich versuchte, von einem Zeichenarray zu lesen. – patrickvacek