Comprobar un DNI con un fichero

MaRaNeLL0

Buenas , estoy haciendo una practica de programación y no consigo hacer esto.
Explico : Tengo que registrar unos usuarios con sus datos , y uno es su DNI , pues ese DNI introducido ( solo digitos por que en el fichero que me han dado solo hay digitos , sin letra ) , ha de comprobar que NO se encuentra en esa lista , si se encuentra debe dar error de USUARIO NO ADMITIDO , sinó pues aceptar la validación.

int NoAdmesos ()
{
FILE *ludopates;
char cadena[9];
int admes, DNI;

printf ("\n\tIntrodueixi el seu DNI:\n\t");
fflush(stdin);
scanf ("%d", &DNI);

ludopates=fopen ("NoAdmesos.txt","r");
if (ludopates == NULL)
	printf ("Error obrint el primer fitxer\n");
else
{
	while (fgets (cadena,10,ludopates) != NULL)
	{
		if ('DNI' != cadena) 
			admes=1;
	}
}

fclose (ludopates);

return admes;
}

Alguien podria ayudarme ?

LOc0

SI el fichero .txt está estructurado así:

12345678
51342567
83564534
84637334
37647465
.
.
ETC


admes=1;

while(admes && fgets (cadena, 9, ludopates) != NULL)
{

cadena[8]=0;

if (dni == atoi(cadena))
admes=0;

}

if(!admes)
printf("\nUsuario NO admitido.\n");

Salu2 ;)

MaRaNeLL0

pero asi recorreria todos los dnis ke hay en el archivo?
pk si tengo
12345678
23456789
87654321
?
Gracias!

LOc0

Sip. Cada fgets (cadena, 9, ludopates) te lee UN DNI. Cuando no queden DNIs fgets devuelve NULL.
Si en el camino, algún DNI de la lista coincide con el que metió el usuario, pues se sale del bucle.

Salu2 ;)

MaRaNeLL0

int NoAdmesos ()
{
FILE *ludopates;
char cadena[8];
int admes, DNI;

printf ("\n\tIntrodueixi el seu DNI:\n\t");
fflush(stdin);
scanf ("%d", &DNI);
admes=1;

while(admes && fgets (cadena, 9, ludopates) != NULL)
{

cadena[8]=0;

if (dni == atoi(cadena))
admes=0;

}

if(!admes)
printf("\nEse DNI ya esta usado.\n");

fclose (ludopates);

return admes;
}

Sería correcto?
Disculpa mi incompetencia , pero es que estoy super perdido con el tema de ficheros.

LOc0

Así mejor:


int NoAdmesos ()
{
FILE *ludopates;
char cadena[9]; //8cifras + el carácter de final de cadena '\0'
int admes, DNI;

printf ("\n\tIntrodueixi el seu DNI:\n\t");
fflush(stdin);
scanf ("%d", &DNI);

ludopates=fopen ("NoAdmesos.txt","r");


if (ludopates == NULL)
printf ("Error obrint el primer fitxer\n");
else
{

admes=1;

while(admes && fgets (cadena, 9, ludopates) != NULL)
{

cadena[8]=0;

if (dni == atoi(cadena))
admes=0;

}

if(!admes)
printf("\nUsuario NO ADMITIDO\n");

fclose (ludopates);

}

return admes;
}

Salu2 ;)

MaRaNeLL0

Mil Gracias! :D

MaNeLeT

uno que tambien hace 1o en la uab jijiji

Usuarios habituales

  • MaNeLeT
  • MaRaNeLL0
  • LOc0