void modificar (char n[], char a[])
{
FILE *f;
persona p;
int tam,i,b=0,c,k;
char op[5];
f=fopen("bin5.dat","r+");
fseek(f,0,2);
tam =ftell(f)/sizeof(persona);
rewind(f);
for (i=0;i<tam;i++){
fread (&p,sizeof(p),1,f);
if (strcmp(p.apellido,a)==0 && strcmp(p.nombre,n)==0){
do
{
do{
printf ("(1)- Modificar nombre.\n");
printf ("(2)- Modificar apellido.\n");
printf ("(3)- Modificar domicilio.\n");
printf ("(4)- Modificar fecha de nacimiento.\n");
printf ("(5)- Salir del submenu.\n");
printf ("Ingrese una opcion:");
fgets (op,5,stdin);
op[strlen(op)-1]='\0';
controlnum(op,&c);
if (c==1)
printf ("NO se ingreso un numero, vuelva a ingresar.\n");
}while (c==1);
switch (atoi(op)){
case 1:{
do{
printf ("Ingrese el nuevo nombre:");
fgets (p.nombre,50,stdin);
p.nombre[strlen(p.nombre)-1]='\0';
controlalf(p.nombre,&c);
if (c==1)
printf ("No se ngresaron solamente letras, vuelva a ingresar.\n");
else {
fseek(f,-sizeof(p),1);
fwrite(&p,sizeof(p),1,f);
printf ("LOS DATOS FUERON MODIFICADOS.\n");
}
}while (c==1);
break;
}
case 2:{
printf ("Ingrese el nuevo apellido:");
fgets (p.apellido,50,stdin);
p.apellido[strlen(p.apellido)-1]='\0';
controlalf(p.apellido,&c);
if (c==1)
printf ("No se ngresaron solamente letras, vuelva a ingresar.\n");
else {
fseek(f,-sizeof(p),1);
fwrite(&p,sizeof(p),1,f);
printf ("LOS DATOS FUERON MODIFICADOS.\n");
}
break;
}
case 3:{
printf ("Ingrese el nuevo domicilio.\n");
p.dom=ingresardomicilio();
fseek(f,-sizeof(p),1);
fwrite (&p,sizeof(p),1,f);
printf ("LOS DATOS FUERON MODIFICADOS.\n");
break;
}
case 4:{
printf ("Ingrese la nueva fecha de nacimiento.\n");
do{
printf("Ingrese el dia:");
fgets (p.dia,10,stdin);
p.dia[strlen(p.dia)-1]='\0';
controlnum(p.dia,&c);
if (c==1)
printf ("No se ingresaron solamente numeros, vuelva a ingresar.\n");
else {
controldia (p.dia,&k);
if (k==1)
printf ("El dia ingresado no existe, vuelva a ingresar.\n");
}
}while (c==1 || k==1);
do {
printf ("Ingrese el mes:");
fgets (p.mes,10,stdin);
p.mes[strlen(p.mes)-1]='\0';
controlnum(p.mes,&c);
if (c==1)
printf ("No se ingresaron solamente numeros, vuelva a ingresar.\n");
else{
controlmes (p.mes,&k);
if (k==1)
printf ("El mes ingresado no existe, vuelva a ingresar.\n");
}
}while (c==1 || k==1);
do{
printf ("Ingrese el año:");
fgets (p.anio,10,stdin);
p.anio[strlen(p.anio)-1]='\0';
controlnum(p.anio,&c);
if (c==1)
printf ("No se ingresaron solamente numeros, vuelva a ingresar.\n");
else {
controlanio (p.anio,&k);
if (k==1)
printf ("El año ingresado no es correcto, vuelva a ingresar.\n");
}
}while (c==1 || k==1);
fseek(f,-sizeof(p),1);
fwrite(&p,sizeof(p),1,f);
printf ("LOS DATOS FUERON MODIFICADOS.\n");
break;
}
}
b=1;
}while (atoi(op)!=5);
}
}
if (b==0)
printf ("No se encontro la persona.\n");
fclose (f);
}