Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/06/2011, 00:06
charliesniper1
 
Fecha de Ingreso: mayo-2011
Mensajes: 1
Antigüedad: 13 años
Puntos: 0
Pregunta datos duplicados en c

Hola a todos. Estoy haciendo una funcion para validar el dni pero no esta funcionando como debe.
Lo que quiero evitar es que ingrese dos veces el mismo dni, en ese caso el programa lo alerta hasta que ingrese otro distinto. Aca esta el segmento del programa donde tengo el problema. Creo que esta relacionado con el rewind, porque cuando ingresa el documento lo tiene que comparar con todos los que ya estan ingresados para ver si existe. Desde ya muchas gracias.

void ingresar_datos (void)
{
FILE *archivo;

int cant;
long int docu;
char nombre[MAX];
char apellido[MAX];

if((archivo=fopen("alumnos.dat","rb"))==NULL)
{
printf("\nNo se puede abrir el archivo");
return 1;
}

rewind(archivo);

fflush(stdin);
printf("\nIngrese nombre: ");
validastr(&nombre);
printf("\nIngrese apellido: ");
validastr(&apellido);
printf("\nIngrese el DNI: ");
//Aca empieza la validacion del DNI
scanf("%ld",&docu);

while(!feof(archivo))
{

printf("%ld %ld\n", docu, pers.dni);//esto es para ver como se va comparando
while((docu<10000000 || docu>99999999)||(docu==pers.dni))
{
rewind(archivo);
if(docu==pers.dni)
{
printf("\nEse documento ya existe\n");
}

else
{
printf("\nDocumento invalido\n");
}

scanf("%ld",&docu);
}



cant=fread(&pers,sizeof(pers),1,archivo);
if(cant!=1)
{
if(feof(archivo))
break;
else
{
printf("\nNo se pudo leer el ultimo dato");
break;
}
}
}

pers.dni=docu;
//Aca termina la validacion del DNI


fclose(archivo);
}