Ich habe folgende Enum und Struktur:Warum ein Segmentierungsfehler in feof()?
enum Destination { unknown = 0, hosok, parlament, var };
struct Client
{
char name[30];
char email[30];
char phone_num[11];
int client_num;
enum Destination destination;
struct tm registration_date;
};
Wenn ich die folgende Methode aufrufen, liest sie die erste Struktur und ausdrucken Name ist, dann bekomme ich einen Segmentation Fault.
void list_clientss()
{
FILE *f = fopen(filename, "r");
if(f == NULL)
{
perror("Error");
}
struct Client client;
while(!feof(f))
{
fread(&client, sizeof(struct Client), sizeof(struct Client), f);
printf("Name: %s\n", client.name);
}
fclose(f);
}
Was habe ich falsch gemacht?
Mögliches Duplikat [Warum ist „während (! Feof (Datei))“ immer falsch?] (Https://stackoverflow.com/questions/5431941/why-is-while-feof-file-always-wrong) –
Sind Sie sicher, dass es in 'feof' segfauling ist? Dein "Freud" -Aufruf ist falsch und du verschwendest deinen Stack. Sie sollten 'fread (& client, sizeof (struct Client), 1, f) aufrufen;' – Cornstalks
Sie sind bereit, _1_ record vom Typ 'struct Client'. Sprich 'fread (& Client, sizeof (struct Client), 1, f);' – Gene