Fortran read-Datei in array - Dimensionen umgesetzt

Ich versuche zu Lesen, eine Datei in den Speicher, in ein Fortran-Programm. Die Datei hat N Zeilen mit zwei Werten in jeder Zeile. Dies ist, was ich derzeit tun (es kompiliert und läuft, aber gibt mir falsche Ausgabe):

program readfromfile
  implicit none

    integer :: N, i, lines_in_file
    real*8, allocatable :: cs(:,:)

    N = lines_in_file('datafile.txt') ! a function I wrote, which works correctly

    allocate(cs(N,2))

    open(15, 'datafile.txt', status='old')
    read(15,*) cs

    do i=1,N
        print *, cs(i,1), cs(i,2)
    enddo

end

Dem, was ich hoffte, zu erhalten, war die geladenen Daten in die variable cs, mit Linien, die als ersten index-und Spalten wie die zweite, aber wenn der obige code ausgeführt wurde, es gibt zunächst druckt eine Zeile mit zwei "linken Spalte" Werte, dann eine Zeile mit zwei "rechten Spalte" Werte, dann eine Zeile mit den nächsten zwei "linke Spalte "Werte" und so weiter.

Hier ist eine weitere visuelle Beschreibung der situation:

In my data file:       Desired output:        Actual output:
A1   B1                A1   B1                A1   A2
A2   B2                A2   B2                B1   B2
A3   B3                A3   B3                A3   A4
A4   B4                A4   B4                B3   B4

Ich habe versucht, schalten die Indizes bei der Zuteilung von cs, aber mit dem gleichen Ergebnis (oder segfault, je nachdem ob ich auch wechseln Indizes bei der print-Anweisung). Ich habe auch versucht, das Lesen der Werte Zeile für Zeile, aber wegen der unregelmäßigen format der Daten-Datei (Komma-separierte, nicht-Spalte ausgerichtet werden) konnte ich nicht bekommen, diese arbeiten überhaupt.

Wie lese ich die Daten in den Speicher der beste Weg, um die Ergebnisse erzielen, die ich will?

InformationsquelleAutor Tomas Aschan | 2013-04-08
Schreibe einen Kommentar