[C] Problème avec ncurses linux

reltak Messages postés 262 Statut Membre -  
dubcek Messages postés 18627 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
Configuration: Linux
Firefox 2.0.0.6

1 réponse

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    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