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

Contraseña oculta

Estas en el tema de Contraseña oculta en el foro de C/C++ en Foros del Web. Hola, estoy buscando un código o más bien arreglar este código para introducir una consaseña que no se vea al escribirla y que luego la ...
  #1 (permalink)  
Antiguo 07/10/2011, 10:21
 
Fecha de Ingreso: septiembre-2011
Mensajes: 22
Antigüedad: 12 años, 7 meses
Puntos: 1
Busqueda Contraseña oculta

Hola, estoy buscando un código o más bien arreglar este código para introducir una consaseña que no se vea al escribirla y que luego la compare con otra variable.

(Este codigo lo he encontrado [URL="http://mx.answers.yahoo.com/question/index?qid=20080524110513AAfFtP4"]aquí[/URL])

Código C++:
Ver original
  1. #include<stdlib.h>
  2. #include<stdio.h>
  3. #include<string.h>
  4. #include<conio.h>
  5. #define H 100
  6. int main(){
  7.  
  8.  
  9. char contr[H],vec2[H]
  10. int a;
  11. char c;
  12.  
  13. printf("\nDime cual quieres q sea tu contraseña: ");
  14. gets(contr);
  15. system("cls");//limpia pantalla
  16. a=1;
  17. do {
  18.  
  19. system("cls");
  20. printf("\n\t...:::Dame la contraseña:::...\n\n ");
  21. a=0;
  22.  
  23. do
  24. {
  25. c=getch();
  26. printf("*");
  27. vec2[a]=c;
  28. a++;
  29. }while(c!=13);//mientras no de enter
  30.  
  31. vec2[a-1]='\0';/* le pone un caracter de fin para q no de error al comparar en el siguiente if*/
  32.  
  33. if(strcmp(contr,vec2)==0){
  34. printf("\n\n\tContraseña Correcta");
  35. a=1;}
  36. else{
  37. printf("\n\n\tContraseña invalida");
  38. a=0;}
  39. printf("\n\n");
  40. system("pause");
  41. }while (a!=1);
  42.  
  43.  
  44. return 0;
  45. }//fin del main

Mi problema es que no quiero que me pida la primera contraseña, sino que ya esta en una variable. Lo he editado y me ha quedado así:

Código C++:
Ver original
  1. #include<stdlib.h>
  2. #include<stdio.h>
  3. #include<string.h>
  4. #include<conio.h>
  5. #define H 100
  6. int main(){
  7.  
  8.  
  9. char contr[H];
  10. char vec2[H];
  11. int a;
  12. char c;
  13.  
  14.  
  15. contr[0]='p';
  16. contr[1]='\0';
  17.  
  18. do {
  19.  
  20. system("cls");
  21. printf("\n\t...:::Dame la contraseña:::...\n\n ");
  22. a=0;
  23.  
  24. do
  25. {
  26. char contr[H],vec2[H];
  27. int a;
  28. char c;
  29.  
  30. c=getch();
  31. printf("*");
  32. vec2[a]=c;
  33. a++;
  34. }
  35. while(c!=13);
  36.  
  37. vec2[a-1]='\0';
  38.  
  39. if(strcmp(contr,vec2)==0){
  40. printf("\n\n\tContraseña Correcta");
  41. a=1;}
  42. else{
  43. printf("\n\n\tContraseña invalida");
  44. a=0;}
  45. printf("\n\n");
  46. system("pause");
  47. }while (a!=1);
  48.  
  49.  
  50. }

Lo único es que al ejecutar el programa con mi código, se bloquea y se cierra.
  #2 (permalink)  
Antiguo 07/10/2011, 13:20
 
Fecha de Ingreso: marzo-2011
Mensajes: 54
Antigüedad: 13 años, 1 mes
Puntos: 11
Respuesta: Contraseña oculta

Porque has definido dos veces las variables?
Código C:
Ver original
  1. char contr[H],vec2[H];
  2. int a;
  3. char c;

No he conseguido entender el codigo, porque a mitad se enreda bastante, asi que te he hecho mi version, creo que hace lo mismo que la tuya:
Código C:
Ver original
  1. #include<stdlib.h>
  2. #include<stdio.h>
  3. #include<string.h>
  4. #include<conio.h>
  5. #define H 100
  6.  
  7. int main(){
  8.     char contr[H] = "", correcta[] = {"hola"}; //correcta es la variable de la pass
  9.     int a; //contador
  10.     char c; //auxiliar
  11.  
  12.     while(strcmp(contr, correcta)){ //mientras no sea igual
  13.         system("cls");
  14.         printf("\n\tDame la contrasenha...\n\n");
  15.         a = 0;
  16.  
  17.         do{
  18.             c = getch();
  19.             if(c != '\r'){ //sin esto añade \r al array y nunca será igual a correcta
  20.                 printf("*");
  21.                 contr[a] = c;
  22.                 a++;
  23.             }
  24.         }
  25.         while(c != '\r');
  26.  
  27.         if(!strcmp(contr, correcta)) printf("Contrasenha correcta\n");
  28.         else printf("Contraseña incorrecta\n");
  29.         getch();
  30.     }
  31.  
  32.     return 0;
  33. }

Recuerda inicializar los arrays siempre, parece una tonteria, pero suele dar problemas.
Si no entiendes algo dimelo, un saludo!
  #3 (permalink)  
Antiguo 07/10/2011, 13:24
 
Fecha de Ingreso: septiembre-2011
Mensajes: 22
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: Contraseña oculta

si es que he copiado de internet el código sin pensar casi porque no lo entendía demasiado... Mañana pruebo tu version y te digo ;)


FUNCIONA PERFECTO!!

Le haré unas modificaciones y lo juntare con el resto del código para comprobar si funciona, pero eso sí que lo haré mañana.

Gracias

Última edición por pacoman; 07/10/2011 a las 13:30
  #4 (permalink)  
Antiguo 07/10/2011, 14:41
 
Fecha de Ingreso: marzo-2011
Mensajes: 54
Antigüedad: 13 años, 1 mes
Puntos: 11
Respuesta: Contraseña oculta

Ok ok, me parece perfecto man. Pero más que hacer copy-paste leete bien el codigo para entenderlo todo, que a la larga es lo mejor.
Añadale algunas funciones más al codigo, como permitir borrar, o que si pulsas algo que no sea alfanumerico no escriba nada... lo dejo a tu imaginacion ;)
  #5 (permalink)  
Antiguo 08/10/2011, 10:08
 
Fecha de Ingreso: septiembre-2011
Mensajes: 22
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: Contraseña oculta

¿Sabrías cómo se podrían borrar la letra de antes cuando le doy al boton de borrar?

======

Otra historia, en el programa utilizo un DLL para enviar e-mails (es el SEE) en trial, por lo que me sale un message box. ¿Alguien sabe cómo podría cerrarlo cuando se abriera?
Pd.: Se que se abre al ejecutar una línea, por lo que se puede saber cuando se abre

Bueno, una idea que he tenido es darle foco al messagebox y enviarle en impulso de enter, por lo que sería como darle al ACEPTAR. ¿Cómo le puedo dar el foco al message box?

Pd.2: Si sabéis de una DLL para enviar emails mejor, que no de problemas, me lo contais ;)

Última edición por pacoman; 09/10/2011 a las 09:27

Etiquetas: contraseña, oculta, programa
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 09:04.