title: Reading/Writing a structure into a binary file
body: <p>I am running a program with 3 structures and what I am doing to read/write in the binary file is the following:</p>
  
  <pre><code>struct Medico
  {
      int Id_Doctor;
      int Estado;
      char Nombre[60];
      char Clave_Acceso[20];
      char Especialidad[40]; 
      struct Medico *next;
  };
  
  typedef struct Medico *Medicazos;
  typedef struct Medico Meds;
  
  Medicazos Nuevo;
  FILE *Archivaldo;
  char especialida[40], password[20];
  char nombre_doc[60];
  int estado_doc, id_doc;
  
  Archivaldo=fopen("md.dat", "rb");
  fclose(Archivaldo);
  
  if((Archivaldo=fopen("md.dat", "rb"))==NULL)
  {
      printf("No se pudo abrir el archivo de Medicos\n"); //couldnt open file msg
      exit(1);
  }
  
  rewind(Archivaldo);
  while(!feof(Archivaldo))
  {
      if(*Inicio != NULL)  //read from file and write in struct
      {
          Nuevo = (Medicazos) malloc (sizeof(Meds)); //new=pointer
          fread(&amp;id_doc, sizeof(int), 1, Archivaldo);
          fread(nombre_doc, sizeof(char), sizeof(nombre_doc), Archivaldo);
          fread(password, sizeof(char), 20 , Archivaldo);
          fread(especialida, sizeof(char), 40, Archivaldo);
          fread(&amp;estado_doc, sizeof(int), 1, Archivaldo);
          Nuevo-&gt;Id_Doctor=id_doc; ///copies data in structure
          strcpy(Nuevo -&gt; Nombre , nombre_doc);
          strcpy(Nuevo -&gt; Clave_Acceso, password);
          strcpy(Nuevo -&gt; Especialidad, especialida);
          Nuevo-&gt; Estado = estado_doc;
          printf("---------------------------------\n"); //display info
          printf("ID: %d\n", id_doc);
          printf("\nDoctor: ");
          puts(nombre_doc);
          printf("\nPassword: ");
          puts(password);
          printf("\nEspecialidad: ");
          puts(especialida);
          printf("\nEstado: ");
          if(estado_doc==1)
              puts("Activo\n");
          else
              puts("Inactivo\n");
          Nuevo-&gt; next = *Inicio;
          *Inicio = Nuevo;
       }
       else 
       {
           *Inicio = (Medicazos)malloc(sizeof(Meds));
           fread(&amp;id_doc, sizeof(int), 1, Archivaldo);
           fread(nombre_doc, sizeof(char), sizeof(nombre_doc), Archivaldo);
           fread(password, sizeof(char), 20 , Archivaldo);
           fread(especialida, sizeof(char), 40, Archivaldo);
           fread(&amp;estado_doc, sizeof(int), 1, Archivaldo);
           (*Inicio)-&gt;Id_Doctor=id_doc;
           strcpy((*Inicio) -&gt; Nombre , nombre_doc);
           strcpy((*Inicio) -&gt; Clave_Acceso, password);
           strcpy((*Inicio) -&gt; Especialidad, especialida);
           (*Inicio)-&gt; Estado = estado_doc;
           printf("--------------------------------\n"); //display info
           printf("ID: %d\n", id_doc);
           printf("\nDoctor: ");
           puts(nombre_doc);
           printf("\nPassword: ");
           puts(password);
           printf("\nEspecialidad: ");
           puts(especialida);
           printf("\nEstado: ");
           if(estado_doc==1)
               puts("Activo\n");
           else
               puts("Inactivo\n");
           (*Inicio) -&gt; next = NULL;
       }
   }
   fclose(Archivaldo);
  </code></pre>
  
  <p>Is there any way to do simplify this?</p>
  
  <p><strong>EDIT</strong>: Also, when I try to display the files someone mentioned me not to use <code>feof</code> while for reading/writing. I dont recall why. What could be used instead?</p>