Hola, estoy buscando una funcion en C que me lea de pantalla pero no imprima por pantalla lo que voy escribiendo. Como para meter una contraseña pero no aparezca por pantalla la contraseña escrita.
Muchas gracias ^^
Hola, estoy buscando una funcion en C que me lea de pantalla pero no imprima por pantalla lo que voy escribiendo. Como para meter una contraseña pero no aparezca por pantalla la contraseña escrita.
Muchas gracias ^^
#include <stdio.h>
#include <string.h>
#include <conio.h>
void main()
{
char pass[20];
printf("\n\tPass: ");
int conta=0;
int i=0;
//Se piden caracteres hasta que se introduca enter
while(pass[i]!=13)
{
//Capturamos carácter
pass[i]=getch();
//Si es un carácter válido y no se ha sobrepasado el límite de 20 caracteres se imprime un asterisco
if(pass[i]>32 && i<20)
{
putchar('*');
i++;
}
//Si se pulsa la tecla RETROCESO, se retrocede un carácter, se imprime un espacio para eliminar el asterisco y se vuelve a retroceder para que el siguiente asterisco se coloque a continuación del anterior.
else if(pass[i]==8 && i>0)
{
putchar(8);
putchar(' ');
putchar(8);
i--;
}
}
pass[i]='\0';
if(!strcmp(pass, "loquesea"))
printf("\n\n\n\n\n\t\tACCESO PERMITIDO");
else
printf("\n\n\n\n\n\t\t**ACCESO DENEGADO**");
getch();
}
[/i]
Si no quieres (o no puedes) usar conio.h tendrás que tirar del API.
Salu2
Muchas gracias #2,usando getc si sabia como hacerlo pero la cosa es que no me dejan usar conio.h pero he encontrao una funcion que hace lo mismo que getc pero sin utilizar conio.h.
Si algien esta interesado la pongo aqui.
hombre ya que lo has preguntado, aal menos pon la solución por si a alguien le pasa en un futuro y usa el buscador xD
http://es.wikipedia.org/wiki/Application_Programming_Interface
http://es.wikipedia.org/wiki/Win32
En vez de usar getch() de conio.h, se pueden usar las funciones del WINAPI para leer de la consola -> http://pastebin.es/1764
(En Linux está la librería ncurses).
Sea como sea, no existe un "método ANSI C" para hacer eso.
Salu2
Ai esta...No tengo ni puta idea de lo que hace pero funciona xD
int mygetch( ) {
struct termios oldt,
newt;
int ch;
tcgetattr( STDIN_FILENO, &oldt );
newt = oldt;
newt.c_lflag &= ICANON | ECHO ;
tcsetattr( STDIN_FILENO, TCSANOW, &newt );
ch = getchar();
tcsetattr( STDIN_FILENO, TCSANOW, &oldt );
return ch;
}
Gracias, no sabía de <termios.h> (Me va a venir de pm para portar programitas de consola de Win a Linux). Lo que hace esa función es desactivar la entrada canónica de la consola (para que no haya que pulsar ENTER) y desactivar el ECHO (para que no salga impresa la tecla pulsada). De esta forma getchar() se comporta como getch().
Salu2
PD: Para usar lo que comenta #7 hacen falta estos headers:
http://pastebin.es/1767