¿Como podria hacer para obtener una cadena de texto con gets, pero que en la pantalla solo aparezcan asteriscos al escribirla?
Gracias...
¿Como podria hacer para obtener una cadena de texto con gets, pero que en la pantalla solo aparezcan asteriscos al escribirla?
Gracias...
Necesitas una función que te permita obtener el caracter pulsado sin que se muestre en pantalla, y poner tú los *. Ninguna función del estándar de C hace eso, tendrás que mirar las funciones de entrada y salida que trae el compilador.
Con C puro y duro? Pues es complicado, por no decirte imposible ,ya que al no tener programacion por eventos, no puedes calcular cuando un usuario presiona una tecla.
Quizas se pueda, lo pensare ta tarde y si se me ocurre algo posteare
Ahora mismo... no se me ocurre nada, pero lo que puedes hacer es, leer los caracteres uno a uno, meterlos en un string, y cada vez que metas uno, que imprima en pantalla un *
Como te ha dicho #3, si luego estoy aburrido intento hacerlo y te lo paso xD
Si no necesitas ANSI C, en conio.h, habia una funcion... getc o getch (no recuerdo cual) que lee un caracter sin mostrarlo por pantalla, igual te sirve.
Lee caracteres hasta tener un "enter" y vete escribiendo asteriscos con un printf o similar.
Saludos
Lo hice hace bastante:
#include <stdio.h>
#include <string.h>
#include <conio.h>
int main()
{
char nick[20];
char pass[20];
printf("\n\tNick: ");
gets(nick);
printf("\n\tPass: ");
int conta=0;
int i=0;
while(pass[i]!=13)
{
pass[i]=getch();
if(pass[i]>32 && i<20)
{
putchar('*');
i++;
}
else if(pass[i]==8 && i>0)
{
putchar(8);
putchar(' ');
putchar(8);
i--;
}
}
pass[i]='\0';
if(strcmp(pass, "LAQUESEA")==0)
printf("\n\n\n\n\n\t\tACCESO PERMITIDO");
else
printf("\n\n\n\n\n\t\t**ACCESO DENEGADO**");
return 0;
}
[/i]
Salu2
Calla calla calla que si que se puede eh gente XD 1 seg ...
Toma:
getch - Funcion de la libreria conio.h en C ANSI y de Borland - Lee un solo carácter directamente desde el teclado, sin mostrar tal carácter en pantalla.
getch();
Haces un algo así:
while(getch()!='\n') ... o como quieras
Prueba que a veces tenías que coger el caracter en una variable char y no se que historias...
Funciona que yo la usé para hacer pruebas de "Desea continuar S/N" si usabas otra llenaba la pantalla de teclas XD
Un saludo
(Existe la equivalente en ensamblador, no se que interrupción era pero no viene al caso XD)
#6 ya esta lo tuyo funciona perfectamente, eliminando la variable conta que no la usas para nada...
conio.h no es ANSI C, esa extensión la llevan casi todos los compiladores, pero no es parte de estándar.
aLeX, siempre me da un warning al compilar, por el gets, porque es tan peligrosa? como curiosidad...
#12:
No hay forma de comprobar que la cadena de texto introducida en consola cabe en en el array donde se va almacenar, y si la cadena es más larga es evidente que peta.
Merci.
Y otra duda, porque es un problema, o no, que conio.h no este definida en ANSI C, si esta en la mayoria de compiladores?