Speichern unter c++

FJK

Erfahrenes Mitglied
hallo

ich muss ein array das mehre struk´s beinhaltet speichern
ist es möglich ein array zu speichern wenn ja wie
wenn nicht bitte ich um tipps oder kompromisse um die daten zu sichern


ich benutze borland c++ enterpreis suite version 5.0 win xp
 
Zuletzt bearbeitet:
Ich hoffe ich hab dich richtig verstanden?

Versuchs mal so:

Code:
struct foo{

        int data1;
        int data2;
        int data3;
};

int main(){

        foo str_array[100];
        return 1;
}

Gruß

RedWing
 
es gibt grundsätzlich keine spezielle Funktion zum Speichern
von Arrays. Das Format der Datei bestimmst du selber.

Du schreibst Funktionen zum Speichern der Daten und
zum Auslesen. Kennst du das Konzept von Ini-Files ? So wär
es zumindest eine ganz einfache Lösung

z.B.
Code:
typedef struct
{
    char data1[20];
    char data2[20];
    char data3[20];

}TData;

TData Dates[ 3 ];

... Dates füllen...

im Ini-File könnte es so aussehen

Code:
[DATA1]
data1=string1
data2=string2
data3=string3

[DATA2]
data1=string4
data2=string5
data3=string6

[DATA3]
data1=string7
data2=string8
data3=string9

mit WritePrivateProfileString (glaub ich) bzw. GetPrivateProfileString (sicher) kannst
du in das oder aus dem Ini-File schreiben oder lesen

Ich hoffe das hilft...

Greets
BadMourning
 
Es gibt üblicherweise Funktionen, um komplette Speicherblöcke zu lesen/schreiben. Unter altem C heissen die fwrite bzw. fread. Wenn deine Structs keine virtuellen Funktionen bzw. Destruktor enthalten, kannst du einfach

fwrite( AdressedesArrays, 1, sizeof( Array ), filehandle );

machen.

Genauso beim Lesen.

Achtung: Wenn Pointer auf irgendwas drin sind, die sind beim Reinladen natürlich Mist. Die müsste man gesondert behandeln.
 
Das ist doch schon fast das Ziel:

Stell dir dein Array vor:

int ZahlenArray[500];

dann heisst das

fwrite( ZahlenArray, sizeof( ZahlenArray ), 1, filehandle );

Beachte, kein & vor der Array-Variable, da ein Array eigentlich wie ein Pointer auf die Startadresse ist.
 
Unbedingt, ja.

a+ ist append.

Zum lesen rb, zum schreiben (überschreiben, statt anhängen) wb.

Das b ist wichtig (binär), sonst wird das ganze als Text behandelt.
 
Du kannst einfach einen String zusammensetzen und da übergeben:

char szTemp[MAX_PATH];

sprintf( szTemp, "c:\\temp\\datei%s.txt", (LPCTSTR)A );

Datei = fopen( szTemp, "ab+" );



AnsiString? Sag mal, was benutzt du da eigentlich? C++ oder C#? oder managed C++?

Mit managed kenn ich mich nicht aus, bei meinem Beispiel müsste A so eingesetzt werden, dass es ein const char* zurückgibt (oder es hat schon einen Umwandeloperator).
 
Zurück