Ludo95
Décembre 4, 2005, 3:53
1
Salut, voila jai un debut de programme en C et jai besoin d’afficher es etoiles au fur et a mesure de l’identification.
Voila mon bout de code
void menu()
{
char pass[LG];
char login[LG];
printf("\n\n\n\t\tEntrez votre login et votre password pour continuer");
printf("\n\n\n");
printf("Login : ");
scanf("%s",&login);
printf("\nPassword : ");
scanf("%s",&pass); //printf("Le login est %s et le pass est %s",login,pass);
verifpass(login,pass);
}
Comment faire svp ?Pcq voir le mot de passe tapé fait pas pro.
Merci d’avance
scanf renvoie également le caracte lu sur la sortie standard (l’ecran), il faut utiliser une fonction qui ne le fait pas.
essaye getc() : http://dpobel.free.fr/man/html/affiche_man…/1107/man/getc/
je n’ai pas testé, ça demande confirmation
si ça marche, tu recupères les caracteres lus et tu écris des ‘*’ sur la sortie standard à coup de printf()
Non. Ca fonctionne autrement, faut manipuler le shell si me souviens bien.
Ludo95
Décembre 4, 2005, 6:12
4
void menu()
{
char pass[LG];
char login[LG];
int j,numcar,ok;
printf("\n\n\n\t\tEntrez votre login et votre password pour continuer");
printf("\n\n\n");
printf("Login : ");
scanf("%s",&login);
printf("\nPassword : ");
//scanf("%s",&pass); //printf("Le login est %s et le pass est %s",login,pass);
for(j=0;j<LG;j++)
{
login[j]=getch();
printf("*");
}
//login=getchar();
}
jai testé comme ça mais c’est pas bon pcq je sais pas combien sera la longueur de la chaine tapé. Comment je peux faire svp ?
getchar() renvoie \n quand Entrée est envoyé au buffer.
Ludo95
Décembre 4, 2005, 10:16
6
jai aussi testé comme ça mais ça passe pas non plus :
do{
login[j]=getch();
printf("*");
}while (login[j]!='\n');</CODE>
tu incrementes où ta variable j ?
Ludo95
Décembre 4, 2005, 10:27
8
voila toute ma fonction
j est initialisé a 0
void menu()
{
char pass[LG];
char login[LG];
int j=0;
printf("\n\n\n\t\tEntrez votre login et votre password pour continuer");
printf("\n\n\n");
printf("Login : ");
scanf("%s",&login);
printf("\nPassword : ");
//scanf("%s",&pass); //printf("Le login est %s et le pass est %s",login,pass);
do{
pass[j]=getch();
printf("*");
}while (pass[j]!='\n');
}
déjà ce sera mieux ainsi:
do{
pass[j]=getch();
printf("*");
}while (pass[j++]!='\n');
Sqns oublier un pass[j] = ‘\0’; à la fin…
Ludo95
Décembre 5, 2005, 3:23
12
rebonjour
jai essayé avec vos methodes mais ça ne passe pas toujours pas. Les eoiles s’affichent bien au fur et a mesure que je tape des caratères mais impossimble de sortir de la boucle. Jai beau tapé sur entér, ça affixhe toujours des etoiles
do{
pass[j]=getch();
printf("*");
}while (pass[j++]!='\n');
comment faire ?
char car;
do{
car = getch();
printf("*");
if(car != ‘\n’)
{
pass[j] = car;
j++;
}
}while(car != ‘\ n’);
pass[j] = ‘\0’;
Ludo95
Décembre 5, 2005, 5:37
14
toujours pas !
jai beau tapé entrée, ça affiche encore des caractères et impossible de passer a la suite du prog
Ce n’est peut-être pas par rapport à ‘\n’ qu’il faut tester ???
La touche <Entrée> renvoit-elle réellement ‘\n’ ?
Ne renvoit-elle pas $13 (ou $10) ?
Pour ceux qui n’auraient pas remarqué : j’y connais rien (mais j’essaye d’aider tout de même…).
Ludo95
Décembre 5, 2005, 7:15
16
merci de ton aide cest appreciable, je cherche la pour voir ce que vaut entrée
essaye:
do{
pass[j]=getch();
printf("*");
}while (pass[j++]!='\0');
le \n semble etre mangé par la fin de saisie
Ludo95
Décembre 5, 2005, 7:35
18
c’est bon jai trouvé !!!!!!!
do{
car = getch();
printf("*");
if(car != 13)
{
pass[j] = car;
j++;
}
}while(car != 13);
pass[j] = '\0';
jai trouvé le code ascii de entrée et voila. Et puis cetait pas \n mais \r. \n est le saut de ligne et \r le retour chariot. On peut don remplacer 13 par \r
Merci encore a vous, vous m’avez bien aidez !!!
Merci
Ludo95
Décembre 5, 2005, 7:54
19
LOL
cest pas fini je viens de m’apercevoir d’un sale truc !!
si l’utilisateur se trompe et qu’il appuie sur del ben ca affiche une etoile !!
rajoute un test:
if((car != 8)&&(car != 127)) /*8 pour backspace et 127 pour del*/
printf("*");