Ich habe eine Binärdatei, die Datensätze enthält. Die Struktur der Datei ist wie folgt:
Struktur (siehe unten) Name String Adresse String
Die fragliche Struktur:
typedef struct{
char * name;
char * address;
short addressLength, nameLength;
int phoneNumber;
}employeeRecord;
employeeRecord record;
Ich erhalte den Namen folgendermaßen:
char name[50];
printf("\nName:");
fgets(name,50,stdin);
record.nameLength = strlen(name)-1;
record.name = malloc(sizeof(char)*record.nameLength);
strcpy(record.name,name);
Ich schreibe die Struktur, dann den Namen und dann die Adresse (wie oben erwähnt).
fwrite(&record.name,sizeof(char),record.nameLength,fp);
wo fp ein Dateizeiger ist.
Jetzt schließe ich die Datei. Wenn ich jedoch später die Daten aus der Datei lesen möchte, glaube ich, dass ich die Struktur einlesen, die nameLength-Variable lesen, genügend Speicher für den Namen allozieren und dann den Namen in die Variable einlesen muss.
So:
char *nameString = malloc(sizeof(char)*record.nameLength);
fread(nameString,sizeof(char),record.nameLength,fp);
printf("\nName: %s",nameString);
Aber wenn ich das versuche, erhalte ich keine gültigen Daten. Beispiel:
Eingegebener Name ist: Joseph (6 Zeichen)
Ausgabedaten:
Name-Länge ist 6 (korrekt),
Name ist A (also Müll)
Offensichtlich mache ich etwas falsch. Könnte mir jemand helfen?