[C/C++] Double-Array in Datei speichern

rookie

Erfahrenes Mitglied
hi,
ich möchte ein double-Array in eine Datei speichern, wie mache ich das am besten ?

eine möglichkeit wäre für jeden wert ne neue zeile zu benutzen, das finde ich aber nicht so gut. kann man das nicht auch in eine zeile schreiben ? und wie lese ich das danach wieder aus ?

Ich hoffe ihr könnt mir helfen !
 
Hallo,

Ich verstehe dein Problem nicht ganz. Die Länge eines Double-Wertes ist doch festgesetzt, also kannst du doch die Werte einfach hintereinanderweg in die Datei schreiben. Du musst sie dann nur wieder als Double auslesen, da müsste das Array eigentlich wieder richtig gefüllt werden.

Ich befasse mich zwar wenig mit C++, aber prinzipiell müsste das doch so funktionieren. :confused:

Gruß
Falk
 
Arbeitest Du mit C oder C++? Im ersten Fall verwendest Du die Filefunktionen wie z.B. fopen() und fprintf() oder fput() für den Dateizugriff. Im zweiten Fall geht das zwar auch, aber empfehlenswerter sind aber Ein- und Ausgabestreams (std::ifstream, std::eek:fstream). Such mal nach diesen Stichworten in Deiner Dokumentation. Wenn noch Fragen, frag ruhig.
 
ich programmiere noch in C.

Code:
#include <iostream.h>
#include <stdio.h>

void main()
{
	FILE *quelle;
	double werte[2][5] = { {2.09, 3.08, 4.01, 5.77, 6.66},{2.29, 0.08, 0.01, 0.77, 0.66}};

	quelle = fopen("wert.dat", "w+b");
	fwrite(werte[0], sizeof(double), 5,quelle);
	fclose(quelle);

	quelle = fopen("wert.dat", "a+b");
	fwrite(werte[1], sizeof(double), 5,quelle);
	fclose(quelle);

	double puffer[10];
	quelle=fopen("wert.dat","r+b");
	fread(&puffer, sizeof(double), 10, quelle);
	fclose(quelle);
	
	cout << puffer[8];
}

Krieg ich das auch irgendwie in 2 Zeilen hin ?
ich hab's bis jetzt nur binär hinbekommen, aber ich würde es auch gerne so haben, dass ich die zahlen dann mit dem editot auch lesen kann.

danke für eure hilfe
 
Hi,
Code:
#include <stdio.h>

#define SIZE_1 2
#define SIZE_2 5

int main( int argc, char *argv[] )
{
    FILE *fileHandle;
    fileHandle = fopen( "output.txt", "w" );
    if ( fileHandle != NULL ) {
        int i, j;
        double werte[SIZE_1][SIZE_2] = {
                                           {2.09, 3.08, 4.01, 5.77, 6.66},
                                           {2.29, 0.08, 0.01, 0.77, 0.66}
                                       };
        for( i=0; i<SIZE_1; i++ ) {
            for( j=0; j<SIZE_2; j++) {
                printf( "%g ", werte[i][j] );
                fprintf( fileHandle, "%g ", werte[i][j] );
            }
            printf( "\n" );
            fprintf( fileHandle, "\n" );
        }
        
        fclose( fileHandle );
    } else {
        printf( "Fehler: konnte Datei nicht oeffnen\n" );
    }
}
Ist aber noch recht statisch, was die Dimensionen und Größe des Arrays
angeht.
 
Zurück