[C] Problème avec ncurses linux

reltak Messages postés 261 Date d'inscription   Statut Membre Dernière intervention   -  
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
j'essaie de faire une saisie de mot de passe dans un terminal linux et j'ai un très gros souci.

le but étant évidemment de cacher la saisie à l'utilisateur à l'aide d'un caractère spécial.

voici la partie de mon code qui ne marche pas :

printf("Mot de passe : ");
int i=0;
while((UserPass[i]=getch())!=13 && i<8)
{
	printf("*");
	i++;
}
UserPass[8] = '\0';
printf("Mot de passe : %s", UserPass);


et après j'affiche le mot de passe pour voir s'il a été bien enregistré.

La sortie sur le terminal ressemble à ça :

Mot de passe : *********Mot de passe : ?????????


alors que je n'ai rien tapé... et l'application se termine normalement.

merci d'avance pour vos réponses

1 réponse

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
Hello
ca dépend du mode du terminal :

man getch
In no-delay mode, if no input is waiting, the value ERR is returned. In delay mode, the program waits until the system passes text through to the program. Depending on the setting of cbreak, this is after one character (cbreak mode), or after the first newline (nocbreak mode). In half-delay mode, the program waits until a character is typed or the specified timeout has been reached.
0