Tengo una matriz de estructuras que me gustaría escribir en un archivo binario. Tengo un programa write.c y un programa read.c. El programa write.c parece funcionar correctamente, pero cuando ejecuto el programa read.c recibo un error de segmentación. Soy nuevo en C, por lo que sería genial si alguien pudiera revisar mi código para detectar cualquier error obvio. Prometo que no es demasiado largo :)Escribir una matriz de estructuras en un archivo binario 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;
}
Gracias por la ayuda!
¿Cuántas veces al día se hace esta pregunta? Debería haber una pregunta frecuente 'C' que nos permita señalar la respuesta en lugar de perder el tiempo escribiendo todo esto una y otra vez ... – KevinDTimm