P
Du benutzt eine binäre Datei, du kannst auch andere Informationen darin speichern.
Eine Frage ist computer das gesamte Feld oder ist computer ein Element des Feldes. Falls computer ein Element ist ginge folgende Lösung
Das nötigen Codeausrisse sehen dann so aus: (Bitte des Fehlerhandling nicht vergessen)
#define Feldlänge 100
typedef struct
{
char name[15];
int raum;
char benutzer[20];
char login_zeit[20];
} DatenSTRUCT;
....
DatenSTRUCT computer[Feldlänge];
int AnzElemente;
....
// Dump der gesamten Datei
lseek(Datei,0L,SEEK_SET);
read(Datei,&AnzElemente,sizeof(int));
if (AnzElemente > Feldlänge)
{
// Fehlermeldung Mehr Elemente im File Als reservierter Speicher
}
for(i=0; i<=AnzElemente; i++)
{
read(Datei,&(computer[i]),sizeof(DatenSTRUCT));
printf("\n\n%s\n", computer[i].name);
printf("%s\n", computer[i].raum);
printf("%s\n", computer[i].benutzer);
printf("%s\n", computer[i].login_zeit);
}
.....
//Das Schreiben der gesamten Datenbank
//Schreiben der Anzahl an den Anfang der Datei
lseek(Datei,0L,SEEK_SET);
write(Datei,AnzElemente,sizeof(int));
//Schreiben der gesamten Daten
for(i=0; i<=AnzElemente; i++) {
write(Datei,&(computer[i]),sizeof(DatenSTRUCT));
.........
//um einen beliebigen Record an Position Pos zu überschreiben
lseek(Datei,sizeof(int)+(Pos*sizeof(DatenSTRUCT),SEEK_SET);
write(Datei,computer[Pos],sizeof(DatenSTRUCT));
..........
//um einen beliebigen Record an Position Pos zu lesen.
lseek(Datei,sizeof(int)+(Pos*sizeof(DatenSTRUCT),SEEK_SET);
read(Datei,&AnzElemente,sizeof(int));
..........
//um einen neuen DatenRecord ans Ende anzuhängen
lseek(Datei,0L,SEEK_END);
write(Datei,&NeueDaten,sizeof(DatenSTRUCT));
Dann wieder an den Anfang der Datei und die Anzahl aktualisieren.
lseek(Datei,0L,SEEK_SET);
write(Datei,AnzElemente,sizeof(int));
........