Bonjour
voici un programme qui permet de faire une saisie de mot de passe jusqu'à 8 caractères, il fonctionne très bien avec DevC++ mais j'utilise un système embarqué donc un compilateur dedié aux microcontrolleurs et j'ai des soucis à cause de ça, voici mon code :
#include <string.h>
#include <stdio.h>
#define BEL 7
#define BS 8
int verifie_passe (char const tentative[])
{
char const passe[] = "sesame";
return strcmp (tentative, passe) == 0;
}
void lire_mp (char *tampon, size_t size)
{
size_t i = 0;
char lettre;
while ((lettre = getch ()) != '\r')
{
if (lettre == BS)
{
if (i > 0)
{
putch (lettre);
putch (' ');
putch (lettre);
i--;
}
else
{
putchar (BEL);
}
}
else
{
if (i < size - 1)
{
tampon[i] = lettre;
i++;
putch ('*');
}
else
{
putchar (BEL);
}
}
}
tampon[i] = 0;
}
void Users_mode (void)
{
unsigned char choiceuser;
int typeutil = 0;
printf ("Would you like to enter in administrator mode (Y/N) ?\n\n");
choiceuser = getchar ();
if ((choiceuser == 'Y') || (choiceuser == 'y'))
{
char pwd[8];
do
{
printf ("\nEntrez le mot de passe :\n");
lire_mp (pwd, sizeof pwd);
}
while (verifie_passe (pwd) == 0);
printf ("\nbienvenue\n");
typeutil = 1;
printf ("You are in administrator mode \n");
}
if ((choiceuser == 'N') || (choiceuser == 'n'))
{
typeutil = 0;
//printf("You aren't in administrator mode \n");
}
}
int main (void)
{
Users_mode ();
return 0;
}
Avec mon compilateur C51 Keil µVision 2 lorsque la fonction lire_mp() est appelée ( je l'ai verifié avec debug ) mon prgramme redemarrait?
C'est je crois un problème de code dans le getch du while de la fonction lire_mp():
while ((lettre = getchar ()) != '\r')
{
if (lettre == BS)
{
if (i > 0)
{
putchar (lettre);
putchar (' ');
putchar (lettre);
i--;
}
else
{
putchar (BEL);
}
}
else
{
if (i < size - 1)
{
tampon[i] = lettre;
i++;
putchar ('*');
}
else
{
putchar (BEL);
}
}
}
en effet en ayant mis getchar à la place de getch, ça va deja mieux car le programme ne redemarre pas mais enfait il ne faut
sans doute pas utliser getchar mais getch() mais mon compilateur Keil C51 redemarre quand j'arrive a cet endroit du code
et le resultat sur capture d'écran est bizarre :
Would you like to enter in administrator mode (Y/N) ?
y
Entrez le mot de passe :
se*s*a*s*m*e*s*s
sesmed
seememds
s
sme
e
e
On ne sort plus de la saise et après le 7 ème étoile on entend le beep à chaque saisie sur le clavier indefiniment je ne voit pas comment faire ?
DevelDelphi :)