Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - M01535

#1
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"
#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!