Foros del Web » Programación para mayores de 30 ;) » C/C++ »

datos duplicados en c

Estas en el tema de datos duplicados en c en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 02/06/2011, 00:06
 
Fecha de Ingreso: mayo-2011
Mensajes: 1
Antigüedad: 12 años, 11 meses
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);
}

Etiquetas: duplicados
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:53.