Ver Mensaje Individual
  #2 (permalink)  
Antiguo 12/09/2011, 07:56
alexg88
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Entrar con contraseña

Te dejo un ejemplo (puede darte problemas con los caracteres como la ñ):

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. #define INTENTOS 3
  5.  
  6. int main(){
  7.  
  8.     char contraseña[12] = "password";
  9.     char contraseñaAdivinada[50];
  10.     int i=0;
  11.     int correcta = 0; //El 0 en C es falso, lo demás es verdadero
  12.  
  13.    
  14.     while (i++<INTENTOS && !correcta) //Realiza el bucle tres veces a no ser que acierte
  15.     {
  16.      printf("Introduzca la contraseña: ");
  17.      scanf("%s",contraseñaAdivinada);
  18.      if (strcmp(contraseña,contraseñaAdivinada)==0) //strcmp devuelve 0 si dos cadenas son iguales
  19.       {
  20.           printf("Contraseña correcta.\n");  
  21.           correcta = 1;
  22.       }
  23.      else  printf("Contraseña incorrecta.\n");   
  24.     }
  25.     if (!correcta)
  26.      printf("Te haz equivocado %d veces. Vuelva a intentarlo dentro de 15 minutos.\n",INTENTOS);
  27.     getchar(); //Toma el \n del buffer de la última entrada
  28.     getchar(); //Espera a que el usuario introduzca un caracter
  29. }

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).