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

Formulario de usuario y password

Estas en el tema de Formulario de usuario y password en el foro de C/C++ en Foros del Web. Hola! Necesito de su ayuda, tengo este código para usar en los password. Pero como lo aplico a un programa para pueda entrar al programa. ...
  #1 (permalink)  
Antiguo 09/04/2013, 15:14
 
Fecha de Ingreso: julio-2010
Mensajes: 191
Antigüedad: 14 años, 4 meses
Puntos: 2
Formulario de usuario y password

Hola! Necesito de su ayuda, tengo este código para usar en los password.

Pero como lo aplico a un programa para pueda entrar al programa. Como ven la contraseña se guarda en un vector (arreglo) y tengo que comparar cada espacio de ese vetor con el usuario. Como lo hago??


Código C:
Ver original
  1. #include<conio.h>
  2. #include<windows.h>
  3. #include<stdio.h>
  4. main()
  5. {
  6.     int i=0;
  7.     char pass[15],c;
  8.  
  9.     do
  10.     {
  11.         c=getch();
  12.         printf("*");
  13.         pass[i]=c;
  14.         i++;
  15.     }
  16.     while(c!=13);
  17.     pass[i-1]='\0';
  18.     printf("\n\n");
  19.     system("pause");
  20.     return 0;
  21.     }
  #2 (permalink)  
Antiguo 09/04/2013, 19:15
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 10 meses
Puntos: 35
Respuesta: Formulario de usuario y password

"tengo que comparar cada espacio de ese vetor con el usuario". Cómo es eso? Explicate bien. En definitiva, para comparar dos vectores de tipo char usa la función estándar strcmp(). Y por cierto, conio no es estándar.

  #3 (permalink)  
Antiguo 10/04/2013, 00:32
 
Fecha de Ingreso: septiembre-2012
Ubicación: Lima
Mensajes: 46
Antigüedad: 12 años, 2 meses
Puntos: 4
Respuesta: Formulario de usuario y password

windows.h y conio.h juntos?? jamas antes visto
  #4 (permalink)  
Antiguo 10/04/2013, 14:56
 
Fecha de Ingreso: julio-2010
Mensajes: 191
Antigüedad: 14 años, 4 meses
Puntos: 2
Respuesta: Formulario de usuario y password

lo siento, si, me explique mal.

De hecho esa funcion es la que necesito, pero no se como se utiliza para comparar La contraseña que esta en el codigo, y la contraseña que el usuario ingresa
  #5 (permalink)  
Antiguo 10/04/2013, 14:58
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 11 meses
Puntos: 94
Respuesta: Formulario de usuario y password

Cita:
pero no se como se utiliza para comparar La contraseña que esta en el codigo, y la contraseña que el usuario ingresa
Cita:
para comparar dos vectores de tipo char usa la función estándar strcmp()
  #6 (permalink)  
Antiguo 10/04/2013, 16:18
 
Fecha de Ingreso: julio-2010
Mensajes: 191
Antigüedad: 14 años, 4 meses
Puntos: 2
Respuesta: Formulario de usuario y password

yo lo tengo!!!

Código C:
Ver original
  1. #include<conio.h>
  2. #include<windows.h>
  3. #include<stdio.h>
  4. #include<string.h>
  5. main()
  6. {
  7.     int i=0,cont=0,contrasenia,user;
  8.    
  9.     char passIngresado[15],c,usuarioIngresado[15],password[13]={112,114,111,103,114,97,109,97,99,105,111,110,0},usuario[7]="kattia";
  10.  
  11.     do
  12.     {
  13.         system("cls");
  14.         printf("Ingrese usuario: ");
  15.         scanf("%s",&usuarioIngresado);
  16.  
  17.         printf("\nContrasenia: ");
  18.         do
  19.         {
  20.            
  21.             c=getch();
  22.             printf("*");
  23.             passIngresado[i]=c;
  24.             i++;
  25.         }
  26.         while(c!=13);
  27.         passIngresado[i-1]='\0';
  28.         printf("\n\n");
  29.        
  30.         for(int y=0; y<i; y++)
  31.         {
  32.             printf("%d\n",passIngresado[y]);
  33.         }
  34.        
  35.  
  36.         contrasenia=strcmp(password,passIngresado);
  37.         user=strcmp(usuario,usuarioIngresado);
  38.         if(contrasenia!=0 || user!=0)
  39.         {
  40.             printf("Datos Incorrectos");
  41.             system("pause");
  42.         }
  43.  
  44.        
  45.     }
  46.     while(contrasenia!=0 || user!=0);
  47.  
  48.     system("pause");
  49.     return 0;
  50.     }

Pero hay un error, por ejemplo, ingreso la contraseña y usuario correcto (el usuario correcto es "kattia" y contraseña "programacion") Funciona de maravilla.

Pero que pasa si ingreso un usuario o contraseña incorrecta y luego los ingreso correctamente, segun el programa no te los toma como buenos.

Y yo se lo que pasa, que el vector "passIngresado" se queda con los datos que se ingresaron por primera vez, y los va acumulando cuantas veces el usuario lo repita.

Entonces como hago para dejar en blanco totalmente el vector, probe usando un ciclo for, asi:

for(int g=0, g<i; g++)
passIngresado='\0';


pero lo que hace es que lo llena de 0, como hago para que el vector quede como fue declarado, sin nada??
o otra forma de hacerlo.

PD: el for
for(int y=0; y<i; y++)
{
printf("%d\n",passIngresado[y]);
}

solo esta para ver lo que tiene incluido el vector.
  #7 (permalink)  
Antiguo 11/04/2013, 14:37
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 11 meses
Puntos: 94
Respuesta: Formulario de usuario y password

Cita:
for(int y=0; y<i; y++)
{
printf("%d\n",passIngresado[y]);
}
Hola! si bien el for esta solo para imprimir lo q tiene, y ya que estas usando cadenas, lo ideal seria que en la condicion compares con el caracter '\0' que indica el fin de una cadena(sino me equivoco todas las funciones de manejo de string utilizan el '\0' en las condiciones de su implementacion)


Cita:
y los va acumulando cuantas veces el usuario lo repita.
Se acumula debido a que la variable "i" nunca se vuelva a inicializar en 0, por lo tanto va incrementando permanentemente a medida que se ejecuta el do-while externo. Pone a cero "i" ni bien comienza el bucle

Saludos

PD: para simular una cadena vacia solo necesitas poner el fin de cadena en la primera posicion del arreglo:
Código C:
Ver original
  1. passIngresado[0]='\0';

Etiquetas: formulario, int, password, programa, usuario
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 22:28.