code de saisie de mot de passe -> mauvaise conversion
Bonjour,
En ayant fait un code de saisie de mot de passe lequel permet d'une part de masquer les caractères saisies et deplus avertit si le nombre de caractères à saisir est dépassé. Le programme compile très bien sous DevC++
Ma première question est-ce que le code n'est pas trop lourd aurais je pu faire ça en une ou deux fonctions simples?
Code:
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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
|
#include <conio.h>
#include <string.h>
#include <stdio.h>
#define BEL 7
#define BS 8
unsigned int typeutil;
int verifie_passe(char tentative[])
{
char passe[] = "sesame";
int pos_caractere = 0;
do
{
if (passe[pos_caractere] != tentative[pos_caractere])
return 0;
pos_caractere++;
} while (passe[pos_caractere] != '\0');
return 1;
}
char *lire_mp (void)
{
static char tampon[8];
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 < sizeof tampon - 1)
{
tampon[i] = lettre;
i++;
putch ('*');
}
else
{
putchar (BEL);
}
}
}
tampon[i] = 0;
return tampon;
}
void Users_mode()
{
unsigned char choiceuser;
unsigned char pass[5];
int num_tries =0;
typeutil=0;
printf("Would you like to enter in administrator mode (Y/N) ?\n\n");
choiceuser=getchar();
if((choiceuser=='Y')||(choiceuser=='y'))
{
char tentative[81];
char *pwd;
do
{
printf("\nEntrez le mot de passe :\n");
pwd = lire_mp ();
} 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()
{
//unsigned int typeutil;
Users_mode();
getchar();
getchar();
return 0;
} |
Et ma seconde question c'est que travaillant dans un système embarqué à base de microcontrolleur j'ai un compilateur specifique, mon compilateur est Keil C51 µVisoin2 quand je compile ce code j'ai un warning :
*** WARNING C318 IN LINE 25 OF ADC.c: can't open file 'conio.h'
Et puis j'ai un problème d' error :
error C267: 'putch': requires ANSI-style prototype
à ce niveau de mon code :
putch (lettre);
en utilisant ceci: puts (lettre);
alors j'ai ce problème :
ADC.C(1147): error C214: illegal pointer conversion
Je ne sais pas comment integrer ce code ?
Merci