[C] Problème avec ncurses linux

Fermé
reltak Messages postés 261 Date d'inscription mercredi 22 août 2007 Statut Membre Dernière intervention 14 janvier 2012 - 7 sept. 2007 à 14:49
dubcek Messages postés 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024 - 7 sept. 2007 à 16:12
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 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024 5 623
7 sept. 2007 à 16:12
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