¿Cómo programar un programa de autenticación de contraseña de encendido en lenguaje C?
La contraseña se guarda en el archivo y la contraseña se lee del archivo, pero no se realiza tolerancia a fallas ni manejo de excepciones. Es solo como referencia
#include
#include
#define PSDLEN 6
void inputPsd(char *str) /*procesar entrada*/
{ p>
int i;
for(i = 0; i < PSDLEN; i++)
{
mientras (1)
{
str[i] = getch();
if(str[i] == '\b') /*Proceso la tecla de retroceso*/ p>
{
i--;
if(i < 0)
{
i = 0;
}
else
{
printf("\b \b");
} p>
continuar;
}
else if(str[i] == '\r') /*Procesar la tecla Enter* /
{
continuar;
}
más
{
printf ("*");
descanso;
}
}
}
str[i] = '\0';
printf("\n");
}
int checkFirst() /*Comprueba si es la primera vez que úsalo*/
{
ARCHIVO *fp;
if((fp = fopen("psd.dat", "rb")) == NULL)
{
devuelve 1;
}
fclose(fp);
devuelve 0;
} p>
void firstUse() /*Necesitas ingresar una contraseña por primera vez*/
{
ARCHIVO * fp;
int i;
char passwd[PSDLEN + 1];
char checkPsd[PSDLEN + 1];
si ((fp = engañar
n("psd.dat", "wb")) == NULL)
{
printf("¡Error al crear contraseña!\n");
exit(1);
}
while(1)
{
printf("Ingrese la contraseña:");
inputPsd(passwd);
printf("\nPor favor, ingrese la contraseña nuevamente:");
inputPsd(checkPsd);
if(!strcmp(passwd, checkPsd))
{
break;
}
printf("\n¡compruebe el error de contraseña! \n");
}
fwrite(contraseña, tamañode(char), PSDLEN, fp);
fclose(fp);
}
void login() /*Comprueba la contraseña e inicia sesión*/
{
ARCHIVO *fp;
int i, num = 3;
char passwd[PSDLEN + 1];
char checkPsd[PSDLEN + 1];
if((fp = fopen ("psd.dat", "rb")) == NULL)
{
puts("Abrir error psd.dat");
salir (1);
}
fread(contraseña, tamañode(char), PSDLEN, fp);
fclose(fp);
passwd[PSDLEN] = '\0';
printf("Ingrese la contraseña para iniciar sesión");
while(num)
{
printf("tienes %d posibilidades de llorar:\n", num);
inputPsd(checkPsd);
if(!strcmp(passwd, checkPsd))
{
break;
}
puts("\nerror de contraseña, introdúzcala de nuevo"); p> p>
num--;
}
if(!num)
{
puts("Presione cualquier tecla para salir...");
getch();
exit(0);
}
else
{
puts("\n--------\n¡Bienvenido!\n-------- \n");
}
}
void main()
{
if(checkFirst ())
{
primerUso();
}
más
iniciar sesión();
getch();
}