Buenas, estoy haciendo un ejercicio de programacion en C en el cual tengo que lograr lo siguiente: Crear un "struct" que almacene los siguientes datos de una persona: nombre, edad, ciudad de residencia. Pedir al usuario esos datos de una persona y guardarlos en un fichero llamado "gente1.dat", usando "fwrite". Cerrar el fichero, volverlo a abrir para lectura y mostrar los datos que se habían guardado, que se deben leer con "fread".
Aun me cuesta entender como funciona exactamente la orden fread y fwrite, por ejemplo, escribiendo: fread(&ficha, sizeof(ficha), 1, fichero); &ficha se refiere al lugar donde se guardan los datos, sizeof(ficha) el tamaño de los datos, el 1 a la cantidad de datos a leer, pero ¿hasta donde se lee?, ¿hasta que encuentre un \0 o \n?, no entiendo muy bien ese 1.
Bueno, aqui os dejo mi intento del ejercicio anterior, el cual casi al finalizar me tira "programa.exe has stopped working" y no se donde está el error.
Edit: Aclarar que el programa me da dos warning: "assignment make pointer from integer without a cast"
Muchas gracias de antemano!
Aun me cuesta entender como funciona exactamente la orden fread y fwrite, por ejemplo, escribiendo: fread(&ficha, sizeof(ficha), 1, fichero); &ficha se refiere al lugar donde se guardan los datos, sizeof(ficha) el tamaño de los datos, el 1 a la cantidad de datos a leer, pero ¿hasta donde se lee?, ¿hasta que encuentre un \0 o \n?, no entiendo muy bien ese 1.
Bueno, aqui os dejo mi intento del ejercicio anterior, el cual casi al finalizar me tira "programa.exe has stopped working" y no se donde está el error.
Edit: Aclarar que el programa me da dos warning: "assignment make pointer from integer without a cast"
Código [Seleccionar]
#include <stdio.h>
#include <string.h>
int main(){
struct{
char Name[100],City[100];
int Age;
}Persona;
FILE *Gente1;
int X;
if(Gente1=fopen("gente1.dat","ab")==NULL){
printf("No se puede escribir en el fichero...\n");
}
else{
printf("Que nombre deseas introducir?: ");
fflush(stdin);
gets(Persona.Name);
printf("\nCiudad?: ");
fflush(stdin);
gets(Persona.City);
printf("\nEdad?: ");
fflush(stdin);
scanf("%d",&Persona.Age);
fwrite(&Persona,sizeof(Persona),1,Gente1);
fclose(Gente1);
}
if(Gente1=fopen("gente1.dat","rb")==NULL){
printf("\nNo se puede leer el fichero...\n");
}
else{
while(!feof(Gente1)){
fread(&Persona,sizeof(Persona),1,Gente1);
puts(Persona.Name);
puts(Persona.City);
printf("%s\n",Persona.Age);
}
fclose(Gente1);
}
fflush(stdin);
getchar();
return 0;
}
Muchas gracias de antemano!