Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   C/C++ (http://www.forosdelweb.com/f96/)
-   -   CONTRASEÑA con asteriscos (http://www.forosdelweb.com/f96/contrasena-con-asteriscos-584365/)

libitzu 08/05/2008 12:59

CONTRASEÑA con asteriscos
 
holas de nuevo, bueno esta ves quisiera pedirles una ayuda.
toy en un proyecto, bueno y necesito una parte de ingreso de usuario y contraseña, el problema esque quiero que al momento de escribir la contraseña salgan "*", en ves de lo que escribe, bueno en mi aula unos patas lo hicieron, yo lo estuve intentando y no lo logro, pero lo mas feo estaria creo en el numero de caracteres a ingregar, que son maximo 12, o sea solo 12 asteriscos y si quiere poner mas que no se lo permita.

esta feo no??

bueno gacias desde ya por la ayuda

TolaWare 08/05/2008 13:14

Re: CONTRASEÑA con asteriscos
 
No es tan difícil como parece.

Lo que tienes que haces es dentro de un bucle, leer la tecla presionada, escribir un * en la salida estándar, y guardar el carácter leído en un buffer.

Algo así:

Código:

int continuar = 1;
while(continuar) {
    // bloquear programa hasta que el usuario presione una tecla
    if(caracterPresionado == ENTER) {
      continuar = 0;
  }
  else {
      // escribir un * en la salida estandar
      // guardar el caracter en un buffer de cadena
  }
}

Cuando el programa salga del bucle, tendrás almacenada la contraseña en el buffer.
Si deseas limitar la cantidad de caracteres, puedes especificar un contador de caracteres tecleados y comprobarlo en el if.

libitzu 08/05/2008 13:25

Re: CONTRASEÑA con asteriscos
 
a ya ok, ver pss si me sale, pero creo que hay un problema, pues si presiona "delete" para borrar algo que equivoco, eso tmbien lo pondra, o no??, ese es el problema, pero mis patas no se como pero evitaron eso

TolaWare 09/05/2008 09:01

Re: CONTRASEÑA con asteriscos
 
Si, de hecho no te interpretará los caracteres especiales como es debido (Enter, Delete, etc). Para paliar esta situación, puedes poner un filtro de caracteres que se fije que caracter ha tipeado el usuario y tomar alguna accion con respecto a eso.

Por ejemplo, si es enter, salir del programa, si es delete, borrar el ultimo caracter.

libitzu 09/05/2008 12:21

Re: CONTRASEÑA con asteriscos
 
claro men, bueno gracias por tu ayuda, pss, ya encontre la solucion, para la contraseña, gracias por todo

ZeroEoyPnk 10/05/2008 09:58

Re: CONTRASEÑA con asteriscos
 
podrias postear de que manera lo solucionaste, si no es mucho pedir, ya que alguien lo puede requerir, y de esa manera, tener alguna base ;)

Cya!

libitzu 12/05/2008 09:54

Re: CONTRASEÑA con asteriscos
 
pa eso si son buenos, no?? para pedir ayuda pero para ayudar,...

ya que importa lo importante del foro esque solucione algunos problemas y este ya esta solucionado, lo posteo mas tarde, es algo largo

cares_5890 13/08/2011 12:36

Respuesta: CONTRASEÑA con asteriscos
 
hola quel tal quisiera que me ayuden que programa me puede facilitar para ver los codigo o contraseñas que uno ingresa y se ve en *** quisiera un programa para yo ver lo que han escrito

el_java_07 13/08/2011 15:55

Respuesta: CONTRASEÑA con asteriscos
 
Si no han podido ayudarte no tienes porque ponerte asi amigo, en este foro suele haber gente muy novata, y quizás no sabian ayudarte, pero bueno, te dejo mi codigo hecho en 0,001 para que veas que la filosofia de los foros es ayudarse sin pedir nada.

Código C++:
Ver original
  1. #include <iostream>
  2. #include <cctype>
  3. using namespace std;
  4.  
  5. int main(){
  6.     string buffer;
  7.     char g=' ';
  8.     int contador = 0;
  9.  
  10.     while(g != '\n' && contador <= 12){
  11.         cin.get(g);
  12.         if(isalnum(g) || ispunct(g)){
  13.             cout << '*';
  14.             buffer.push_back(g);
  15.         }
  16.         contador++;
  17.     }
  18.  
  19.     return 0;
  20. }

El problema de mi codigo es que como se ejecuta en la terminal, para que haga el cin.get tienes que pulsar el enter, asi que solo saldran los asteriscos cuando pulses enter, para que esto no ocurra, si trabajas con librerias como Qt o wxwidgets, siempre tienen funciones para comprobar que el texto de sus cuadros de textos ha cambiado, entonces habria que cambiar el cin.get(g) por "if (Change(cuadro_de_texto))"
Pero bueno, te sirve para ver como usar la libreria cctype.
Por cierto, mi programa solo admite caracteres alfanumericos y de puntuacion ;)

Hechale un ojo a esto [URL="http://www.cplusplus.com/reference/clibrary/cctype/"]http://www.cplusplus.com/reference/clibrary/cctype/[/URL].

Un saludo!

Luc1fer 16/05/2012 19:35

Respuesta: CONTRASEÑA con asteriscos
 
Amigos soy nuevo en el foro y en programacion y me pidiron hacer un programa que dependiendo el usuario aria algo pro que la contraseña no se viero y no se como alguien me puede ayudar por favor aqui esta mi codigo en c++

#include <stdio.h>
#include <conio.h>
#include <string.h>

#define usr "ricardo"
#define pass "hola"
#define usr1 "oziel"
#define pass1 "upp"
#define usr2 "ely"
#define pass2 "123"


int main(void) {
int numIntentos =3;
int a,b,c;
char usuario[100];
char contrasena[100];
printf("\n*** BIENVENIDO ***\n");
printf("\n MENU \n");
printf("\n1. CAPTURISTA\n");
printf("\n2. ADMINISTRADOR\n");
printf("\n3. SUPERVISOR\n");
printf("\n4. SALIR\n");
scanf("%i",&a);
switch(a){
case 1:
printf("usuario: ");
scanf("%s", usuario);
printf("contrasena: ");
scanf("%s", contrasena);
if ((strcmp(usuario, usr)!= 0) && (strcmp(contrasena, pass)!= 0))
{
printf("\tusuario no registrado y/o contrasena invalida\n");
}
else{
printf("***** A R C H I V O *****");
break;
}
case 2:
printf("usuario: ");
scanf("%s", usuario);
printf("contrasena: ");
scanf("%s", contrasena);
if ((strcmp(usuario, usr1)!= 0) && (strcmp(contrasena, pass1)!= 0))
{
printf("\tusuario no registrado y/o contrasena invalida\n");
}
else {
printf("\n MENU \n");
printf("\n1. ARCHIVO\n");
printf("\n2. HERRAMIENTAS\n");
printf("\n3. AYUDA\n");
scanf("%i",&b);
switch(b){
case 1:
printf("***** A R C H I V O *****");
break;
case 2:
printf("***** H E R R A M I E N T A S *****");
break;
case 3:
printf("***** A Y U D A *****");
break;
default:
printf("OPCION NO VALIDA");
break;
};
break;
}
case 3:
printf("usuario: ");
scanf("%s", usuario);
printf("contrasena: ");
scanf("%s", contrasena);
if ((strcmp(usuario, usr2)!= 0) && (strcmp(contrasena, pass2)!= 0))
{
printf("\tusuario no registrado y/o contrasena invalida\n");
}
else {
printf("\n MENU \n");
printf("\n1. ARCHIVO\n");
printf("\n2. HERRAMIENTAS\n");
scanf("%i",&c);
switch(c){
case 1:
printf("***** A R C H I V O *****");
break;
case 2:
printf("***** H E R R A M I E N T A S *****");
break;
default:
printf("OPCION NO VALIDA");
break;
};
break;
}
case 4:
break;
default:
printf("OPCION NO VALIDA");
break;
}
getch();
}

cesar_casla 16/05/2012 21:02

Respuesta: CONTRASEÑA con asteriscos
 
Hola! veo q usas la libreria conio, proba con getche()

Saludos

Luc1fer 20/05/2012 16:52

Respuesta: CONTRASEÑA con asteriscos
 
reemplaze la libreria conio por getch.h y me marco error

no entendi perdon

cesar_casla 20/05/2012 16:59

Respuesta: CONTRASEÑA con asteriscos
 
getche() es una funcion de la libreria conio.h. Busca como funciona getche no getch, son dos funciones distintas

Saludos

Edux099 21/05/2012 15:41

Respuesta: CONTRASEÑA con asteriscos
 
Cita:

Iniciado por cesar_casla (Mensaje 4192399)
getche() es una funcion de la libreria conio.h. Busca como funciona getche no getch, son dos funciones distintas

Saludos

Seguimos usando conio.h y getche() ?? :serio:

cesar_casla 21/05/2012 16:56

Respuesta: CONTRASEÑA con asteriscos
 
Asi:
Código C:
Ver original
  1. #include <stdio.h>
  2. #include <conio.h>  // para la libreria conio.h
  3.  
  4. int main()
  5. {
  6. .........
  7. char c;
  8. printf("Ingrese algo\n");
  9. c=getche(); // aca se supone que no se ve lo que se escribe por teclado
  10.  
  11. return 0;
  12. }

No estoy seguro si asi se usa getche, cualquier cosa busca su funcionamiento

Saludos


La zona horaria es GMT -6. Ahora son las 00:34.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.