speichern laden
-
ich speichere ein array von einer struktur binär mit
fwrite und lese die wieder mit fread einalso:
struct Daten{ //daten... }; struct Daten*Data=(Daten*)malloc(sizeof(Daten)); int main(){ // Data wird mal mit realloc vergrößert und // es wird etwas reingeschrieben... write(Data,sizeof(Daten),iIndex,File); }
das problem ist wie kann ich beim lesen
herausfinden wie viele sätze sich darin befinden?
-
Hi
Ich versteh die Frage nicht ganz. Meinst du Sätze in der Datei oder im Array ?
Du erstellst übrigens kein Array von struct Daten mit deiner allozierung.Sondern erstellst die struktur daten dynamisch.
Wenn du Sätze in der Datei meinst.: Ist das überhaupt wichtig ?
Du kannst einfach alle Einlesen bis eof und meinetwegen mitzählen.
-
ja ich mein die vom file
hab ich mir auch schon gedacht, aber mit was soll
ich das machen??
-
Hi
na einfah mitzählen
//----snip------ int i=0; int bytes=0; while(1) { bytes+=fread(Data[i],sizeof(Daten),1,datei); if(feof(datei)) break; } //jetz i i die Anzahl //da du aber vorher nicht weist wieviele Datensätze es sind müsstest du realloc //benutzen oder aber jedesmal die Anzahl der Datensätze als erstes in die Datei //schreiben, dann kannst du sie auslesen und entsprechend speicher allozieren //mit malloc //----snap------ Ich hoffe das ist was du meinst
-
1. Dateigroesse ermitteln
2. Buffer in dieser Groesse allozieren
3. File in diesen Buffer einlesen
4. Anzahl Eintraege=Filegroesse / Groesse deines TypsIch darf aber damit rechnen, dass du keine Pointer im struct
hast... oder?
-
natürlich hab ich keine pointer in der struktur
aber danke für deine hilfe jetzt funkts