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



## rookie (29. August 2003)

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 !


----------



## vogtländer (29. August 2003)

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.  

Gruß
Falk


----------



## rookie (29. August 2003)

wie würde das im quelltext aussehen ? oder welche befehle muss ich dafür benutzen ?

danke


----------



## Kachelator (31. August 2003)

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:fstream). Such mal nach diesen Stichworten in Deiner Dokumentation. Wenn noch Fragen, frag ruhig.


----------



## rookie (1. September 2003)

ich programmiere noch in C.


```
#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


----------



## Kachelator (1. September 2003)

> Krieg ich das auch irgendwie in 2 Zeilen hin ?


Wie meinst Du das?


> 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.


Dann  solltest Du mit fprintf() ausgeben und mit fscanf() IIRC einlesen. Macht das Ganze aber etwas kniffliger.


----------



## Fabian H (2. Januar 2004)

Hi,

```
#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.


----------

