Comment masquer le mot de passe en c?

En C, je souhaite afficher chaque caractère saisi par l’utilisateur sous la forme *

Je cherche autour mais je ne peux pas trouver de solution pour ça. Je travaille sur Ubuntu. Est-ce que quelqu’un sait un bon chemin?

    Voir mon code. cela fonctionne sur mon système FC9 x86_64:

    #include  #include  #include  #include  int main(int argc, char **argv) { char passwd[16]; char *in = passwd; struct termios tty_orig; char c; tcgetattr( STDIN_FILENO, &tty_orig ); struct termios tty_work = tty_orig; puts("Please input password:"); tty_work.c_lflag &= ~( ECHO | ICANON ); // | ISIG ); tty_work.c_cc[ VMIN ] = 1; tty_work.c_cc[ VTIME ] = 0; tcsetattr( STDIN_FILENO, TCSAFLUSH, &tty_work ); while (1) { if (read(STDIN_FILENO, &c, sizeof c) > 0) { if ('\n' == c) { break; } *in++ = c; write(STDOUT_FILENO, "*", 1); } } tcsetattr( STDIN_FILENO, TCSAFLUSH, &tty_orig ); *in = '\0'; fputc('\n', stdout); // if you want to see the result: // printf("Got password: %s\n", passwd); return 0; } 

    Jetez un coup d’œil à la bibliothèque ncurses . C’est une librairie sous licence très libérale avec une énorme quantité de fonctionnalités sur une grande variété de systèmes. Je ne l’ai pas beaucoup utilisé, aussi je ne sais pas exactement quelles fonctions vous souhaitez appeler, mais si vous consultez la documentation , vous êtes certain de trouver ce que vous voulez.

    Faites-le manuellement. Lisez les caractères un par un avec, par exemple, getch () dans conio et imprimez un * pour chacun.

    utiliser un programme comme celui-ci me demander plus de questions

    ce programme est utilisé pour mettre * à la place du caractère et il supprime l’entrée après avoir utilisé backspace ^^

     #include  #include  #include  int main() { char a[100],c; int i; fflush(stdin); for ( i = 0 ; i<100 ; i++ ) { fflush(stdin); c = getch(); a[i] = c; if ( a[i] == '\b') { printf("\b \b"); i-= 2; continue; } if ( a[i] == ' ' || a[i] == '\r' ) printf(" "); else printf("*"); if ( a[i]=='\r') break; } a[i]='\0'; printf("\n%s" , a); }