2014-06-24 29 views
6

Voglio leggere una riga in un file, che include tre numeri reali, senza far avanzare il puntatore. Così ho scritto: (TXT è la variabile che rappresenta il mio file che ha un valore di 80)Lettura senza avanzamento in Fortran con formato libero

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

Tuttavia, ho ricevuto un messaggio di errore che dice:

"Errore # 6568: Questo uso del ADVANCE, L'identificatore SIZE o EOR non è valido. "

Quindi, come devo scriverlo per renderlo corretto?

Grazie.

+0

Se il motivo per cui non si desidera passare alla riga successiva è che ci sono più dati da leggere sulla linea, un approccio comune è quello di leggere l'intera riga in una stringa utilizzando il formato "(a)" e quindi ripetutamente leggere dalla stringa. – Fortranner

risposta

8

È possibile utilizzare advance = 'no' solo con un formato esplicito. Il motivo è il seguente: advance = 'no' evita semplicemente di andare al record successivo (si noti che il puntatore del file avanza comunque, subito dopo l'ultimo valore letto); ma con una lista diretta (formato *), non si sa quanti record sono coinvolti dalla propria dichiarazione di lettura (i tre numeri possono essere scritti su quattro righe, per esempio).

+0

Si noti inoltre che 'ADVANCE' può essere utilizzato solo per la lettura da un'unità esterna. Mi sono bruciato cercando di leggere da un array di caratteri. – patrickvacek