Te dejo un ejemplo (puede darte problemas con los caracteres como la ñ):
Código C:
Ver original#include <stdio.h>
#include <string.h>
#define INTENTOS 3
int main(){
char contraseña[12] = "password";
char contraseñaAdivinada[50];
int i=0;
int correcta = 0; //El 0 en C es falso, lo demás es verdadero
while (i++<INTENTOS && !correcta) //Realiza el bucle tres veces a no ser que acierte
{
printf("Introduzca la contraseña: "); scanf("%s",contraseñaAdivinada
); if (strcmp(contraseña
,contraseñaAdivinada
)==0) //strcmp devuelve 0 si dos cadenas son iguales {
printf("Contraseña correcta.\n"); correcta = 1;
}
else printf("Contraseña incorrecta.\n"); }
if (!correcta)
printf("Te haz equivocado %d veces. Vuelva a intentarlo dentro de 15 minutos.\n",INTENTOS
); getchar(); //Toma el \n del buffer de la última entrada getchar(); //Espera a que el usuario introduzca un caracter }
El principal problema son las cadenas de caracteres:
en C, las cadenas de caracteres son arrays de caracteres que finalizan con un \0 (siempre hay que dejar un caracter al final para el \0).
Si al leer de la entrada la contraseña, el usuario escribiese más de 49 caracteres, se podría salir de la zona de memoria asignada y dar o no error (por eso es muy peligroso).