Forum Clubic

Afficher des etoiles quand on saisit - en langage C

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. :confused:

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.

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.

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 ?

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…

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’;

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…). :wink:

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

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

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("*");