Duda con C

Hola!

Vereis, estoy liado con un programa que estoy haciendo en C y me gustría saber hacer una cosa.
Tengo que poner un password y no quiero que se vea por pantalla, al principio pense en substituir el texto por asteriscos, pero lo veia muy complicado y he pensado en hacerlo como en el logeo de Linux, que no sale nada.

Como podría hacer para que en pantalla no se vea nada, pero el programa lea lo que estoy escribiedo?

Muchas gracías y un saludo a tod@s
si estas usando ncurses usa noecho(); sino puedes cambiar el color del texto al mismo que el del fondo [sonrisa] o leer los caracteres uno por uno con c=getch(stdin)
gracias,

he estado buscando la forma de como "aplicarlo" y no he encontrado mucha cosa clara ya que el password lo leo con el scanf, por lo tanto he probado de poner el noecho() encima del scanf asi:

noecho();
scanf ("%s", pass);

he compilado con gcc, con la opcion -lcurses y al ejecutar el programa y llegar al password, me da violacion de segmento.

Muchas gracias por todo.

Edito: scanw i printw...
Normalmente -lcurses y -lncurses es lo mismo. Es más en los sistemas Linux y Unix modernos no hay distinción. No creo que nadie tenga instaladas las curses originales (que hasta donde yo se no eran libres).

Antes de eso tienes que hacer el initscr si no recuerdo mal. Mirate la documentación de ncurses.

Salu2.Ferdy
Pero ¿vas a usar ncurses sólo para hacer eso? Parece matar moscas a cañonazos. ¿No te sirve esto?

Defines esta función:

void echo(int ver) {
   if(ver)
        system("stty echo");
   else
        system("stty -echo");
}


Y cuando necesitas meter la clave:

echo(NO);
gets(clave);
echo(SI);


Previamente habrás tenido que hacer dos defines para NO (0) y para SI (1).
5 respuestas