Comment afficher le password en etoiles?
Comment afficher le password en etoiles?
S'il s'agit d'une application graphique (avec fenêtre), précise la bibliothèque que tu utilises. S'il s'agit d'une application console (avec des printf), précise ton système (Windows ? Linux ? etc.). Dans ce dernier cas, il n'y a pas de solution standard, mais tu peux utiliser getch() (DOS/Windows) pour la saisie et putchar('*') pour faire l'echo. On peut facilement écrire une implémentation de getch() pour Linux, tu peux pour cela t'appuyer sur les codes de la FAQ.
Ici l'utilisateur n'entre qu'un caractère, mais perfectionner ce code est tout sauf difficile.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #include <stdio.h> #include <conio.h> int main() { int c; printf("Tapez le mot de passe : "); c = _getch(); putchar('*'); printf("\nVous avez tape : %c\n", c); return 0; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 #include <stdio.h> #include <conio.h> #include <string.h> int main() { char c=13,C,pass[20],passwd[]="mot";//_de_passe int i=0,j=0; int n; printf("Tapez le mot de passe : "); while((C =_getch())&&(C!=c)!=0) { if (C != c){ putchar('*'); pass[i]=C; i++;} } if (strcmp(passwd,pass)==0) {printf("\n * Succée * \n");// le problem !!!! printf("\nVous avez tapez :"); while(j<i) { putch(pass[j]); j++; } } else printf("\nErreure ###"); printf("\nVous avez tapez :"); while(j<i) { putch(pass[j]); j++; } getchar(); return 0; }
Le mieux c'est que tu laisses l'utilisateur taper ce qu'il veut et après qu'il ait validé sa chaîne, c'est là seulement que tu regardes si le mot de passe est bon ou pas.
Ici, tu trouveras une fonction qui permet de saisir une chaîne en utilisant getchar dans une boucle (tu devrais également penser à lire l'article en entier ...). Pour faire ta fonction saisir_mot_de_passe, il suffit de remplacer getchar par _getch suivi de putchar('*'). Refais ton programme puis poste à nouveau ton code.
merci beaucoup pour l'aide
il march très bien avec devC++
sofe avec gcc le copilateur ne marche pas evec getch !
just une petit question !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 #include <stdio.h> #include <conio.h> #include <string.h> #include <ctype.h> #include <wchar.h> int main() { char c=13,C,pass[20],passwd[]="mot";//_de_passe int i=0,j=0; int n; printf("Tapez le mot de passe : ");//scanf("%i",&n); while((C =_getch())&&(C!=c)!=0) { if (C != c){ putchar('*'); pass[i]=C; i++;} } printf("n=%d",i); if (strcmp(passwd,"mot")==0) {printf("\n * Succée * \n");// le problem !!!! printf("\nVous avez tapez :"); while(j<i) { putch(pass[j]); j++; } } else printf("\nErreure ###"); _getch(); return 0; }
c'est quoi la déférence entre _getch et getch ?
getch était le nom original de la fonction (fin des années 80 et début des années 90) mais il est désormais remplacé par _getch pour les raisons données dans la FAQ. Le nom "getch" a toujours été conservé par souci de compatibilité avec les anciens codes mais son utilisation est déconseillé car il peut être définitivement abandonné à tout moment.
Pourquoi ce code ne compilerait pas avec gcc ? D'abord si tu parles de gcc sous Linux, c'est normal parce que getch est une fonction MS-DOS et Windows, elle n'existe pas sous les autres systèmes. Sous Windows, ça compile même avec gcc. D'ailleurs le compilateur utilisé par DevCpp n'est autre que gcc (enfin, un portage de gcc pour Windows appelé MinGW. il existe d'autres portages ...). Sous Linux, l'équivalent de getch c'es tout simplement getchar, mais il faut avoir passé le terminal en mode brut avant.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager