#include <stdio.h>
#include <string.h>

struct _datos
{
    int codigo;
    char nombre[25];
    char apellido[25];
    int edad;
    char sexo;
};
typedef struct _datos datos;

void ingresar(FILE *pf);
void mostrar(FILE *pf);
int  buscar(FILE *pf, char *ape);

void Menu(FILE *pf);

int main()
{
   FILE *pf;
   if ((pf=fopen("nuevo","r+b"))==NULL)
   {
      printf("No pude leer");
      if ((pf=fopen("nuevo","w+b"))==NULL)
      {
          printf("No pude escribir");
          return 0;
      }
   }
   if (pf==NULL)
   {
      printf("No se puede abrir archivo");
      return 0;
   }
   Menu(pf);
   fclose(pf);
   return 0;
}

void ingresar(FILE *pf)
{
   datos aux;
   fseek(pf,0L,SEEK_END);
      printf("Nombre:");
      scanf("%s",aux.nombre);
      printf("Apellido");
      scanf("%s",aux.apellido);
      printf("Edad");
      scanf("%d",&aux.edad);
      printf("Codigo");
      scanf("%d",&aux.codigo);
      fwrite(&aux,sizeof(aux),1,pf);
   return;
}

void mostrar(FILE *pf)
{
   datos aux;
   fseek(pf,0L,SEEK_SET);
   printf("\n");
   while (!feof(pf))
   {
      if ((fread(&aux,sizeof(aux),1,pf))==1)
      {
         printf("%20s",aux.nombre);
         printf("%20s",aux.apellido);
         printf("%2d ",aux.edad);
         printf("%2d",aux.codigo);
         printf("%1c",aux.sexo);
      }
      else
         printf("\nNULL\n");
      printf("\n");

   }
   return;
}

void Menu(FILE *pf)
{
   int op=7;
   char ape[25];
   do
   {    
	printf("[1m 1.- Ingresar[0m\n");
	printf("[1m 2.- Modificar[0m\n");
	printf("[1m 3.- Eliminar[0m\n");
	printf("[1m 4.- Listar[0m\n");
	printf("[1m 5.- Salir[0m\n");
	printf("Elija alguna de las cinco opciones: 
[ ]\b\b");
        scanf("%d",&op);
	getchar();
        switch (op)
        {
           case 1:
                   ingresar(pf);
                   break;
           case 2:
/*                   modificar(pf);*/
                   break;
           case 3:
/*                   eliminar(pf);*/
                   printf("\n\n Ingrese apellido a 
buscar ::");
                   scanf("%s",ape);
                   if (buscar(pf,ape)==0)
                      printf("No encontrado\n");
                   break;
           case 4:
                   mostrar(pf);
                   break;
           case 5:
                   exit(0);
        }

   } while (op!=5);

}
	
int buscar(FILE *pf, char *ape)
{
   datos aux;
   int bli=0;
   fseek(pf,0L,SEEK_SET);
   while (!feof(pf))
   {
      if ((fread(&aux,sizeof(aux),1,pf))==1)
      {
         if (strcmp(ape,aux.apellido)==0)
         {
            bli=1;
            break;
         }
      }
      else
         printf("\nNULL\n");
   }
   if (bli==1)
   {
      printf("Nombre %s\n ",aux.nombre);
      printf("Apellido %s\n ",aux.apellido);
      printf("Edad %d\n ",aux.edad);
      printf("Codigo%d\n",aux.codigo);
      printf("Sexo %c\n",aux.sexo);
      return 1;
   }
   return 0;
}    

