J'ai un tableau de structures que je voudrais écrire dans un fichier binaire. J'ai un programme write.c et un programme read.c. Le programme write.c semble fonctionner correctement mais lorsque j'exécute le programme read.c, j'obtiens une erreur de segmentation. Je suis nouveau à C donc ce serait génial si quelqu'un pouvait regarder sur mon code pour des erreurs évidentes. Je vous promets que ce n'est pas trop long :)Ecriture d'un tableau de structures dans un fichier binaire en C
write.c:
#include <stdlib.h>
#include <stdio.h>
struct Person
{
char f_name[256];
char l_name[256];
int age;
};
int main(int argc, char* argv[])
{
struct Person* people;
int people_count;
printf("How many people would you like to create: ");
scanf("%i", &people_count);
people = malloc(sizeof(struct Person) * people_count);
int n;
for (n = 0; n < people_count; n++)
{
printf("Person %i's First Name: ", n);
scanf("%s", people[n].f_name);
printf("Person %i's Last Name: ", n);
scanf("%s", people[n].l_name);
printf("Person %i's Age: ", n);
scanf("%i", &people[n].age);
}
FILE* data;
if ((data = fopen("data.bin", "wb")) == NULL)
{
printf("Error opening file\n");
return 1;
}
fwrite(people, sizeof(struct Person) * people_count, 1, data);
fclose(data);
return 0;
}
read.c:
#include <stdlib.h>
#include <stdio.h>
struct Person
{
char f_name[256];
char l_name[256];
int age;
};
int main(int argc, char* argv[])
{
FILE* data;
if ((data = fopen("data.bin", "rb")) == NULL)
{
printf("Error opening file\n");
return 1;
}
struct Person* people;
fread(people, sizeof(struct Person) * 1/* Just read one person */, 1, data);
printf("%s\n", people[0].f_name);
fclose(data);
return 0;
}
Merci pour l'aide!
Combien de fois par jour cette question est-elle posée? Il devrait y avoir une FAQ 'C' qui nous permettra de pointer vers la réponse plutôt que de passer le temps à écrire tout ce temps après le temps ...... – KevinDTimm